Системные неймспейсы Reindexer со статистическими данными

Для каждой базы данных в Reindexer создается набор системных неймспейсов для хранения настроек и статистической информации. Для получения их списка можно воспользоваться командой \namespaces list через утилиту reindexer_tool:

Reindexer> \namespaces list

В ответ вернется перечень всех неймспейсов базы данных. Названия системных начинаются с символа #.

Ниже представлены описания системных неймспейсов Reindexer, в которых хранится статистическая информация по базам данных, каждому неймспейсу, запросам, репликации.

Неймспейс #memstats

В системном неймспейсе #memstats хранится детальная информация о потреблении памяти каждым неймспейсом базы данных.

Имя Тип данных Описание
name string Название неймспейса
items_count int64 Общее количество записей в неймспейсе
empty_items_count int64 Количество пустых (неиспользуемых) слотов в неймспейсе. Поле возвращается только, если его значение не равно нулю
strings_waiting_to_be_deleted_size int64 Размер строк, удаленных из неймспейса, но все еще используемых в queryResults
storage_ok bool true, если дисковое хранилище включено и доступно для записи
storage_enabled bool true, если дисковое хранилище включено (этот флаг не учитывает наличия ошибок, связанных с записью в хранилище)
storage_status string Состояние дискового хранилища. Возможные значения: OK, NO SPACE LEFT, DISABLED или текст необработнной ошибки
storage_path string Путь к хранилищу неймспейса в файловой системе
optimization_completed bool Состояние фоновой оптимизации индексов
total object Сводка по потреблению памяти неймспейсом. Поля:
data_size — общий объем хранящихся в неймспейсе записей,
indexes_size — объем памяти, потребляемый индексами неймспейса,
cache_size — размер памяти, занимаемый кэшем данных из неймспейса
index_optimizer_memory — объем памяти, которую занимает фоновый оптимизатор индексов
replication object Статус репликации неймспейса. Значения полей описаны в разделе «Проверка статуса репликации»
join_cache object Сводная статистика Join-кэша. Хранит результаты выбора в правом неймспейсе по условию ON. Состав объекта описан ниже
query_cache object Сводная статистика Query-кэша. Хранит результаты запросов SELECT COUNT(*) с условиями WHERE. Состав объекта описан ниже
indexes array Сводка по потреблению памяти индексами неймспейса. Представляет собой массив объектов, соответствующих каждому индексу. Кроме того, помимо объявленных вами индексов, здесь отображается информация о специальном индексе -tuple. Он хранит структуру json исходного документа с неиндексированными полями.
Поля объектов — элементов массива:
name — название индекса.
uniq_keys_count — количество уникальных значений ключей, хранящихся в индексе.
idset_plain_size — Общее потребление памяти обратными индексными векторами. Для индексов store всегда равно нулю.
data_size — объем памяти, занимаемый документами, хранящимися по индексу.
sort_orders_size — общее потребление памяти оператором SELECT и операторами сравнения GT и LT. Параметр измеряется только к индексам типа tree.
idset_btree_size — общее потребление памяти структурами b-tree с обратным индексом. Для индексных полей типа dense и store значение всегда равно нулю.
fulltext_size — общее потребление памяти структурами полнотекстового поиска.
tracked_updates_count — количество обновлений, ожидающих в трекере обновлений индекса.
tracked_updates_buckets — количество сегментов в карте трекера обновлений индекса.
tracked_updates_size — объем памяти, занимаюемой обновлениями индекса, которые накопились после его последней оптимизации. Если обновлений слишком много, они сбросятся, что приведёт к полной пересортировке индекса при следующем вызове оптимизатора.
idset_cache — сводная статистика Idset-кэша. Хранит объединенные результаты обратного индекса поля SELECT field IN(…) by IN(…) keys. Состав объекта описан здесь

Сводная статистика Join, Query и Idset кэша включает следующие поля:

  • total_size — общее потребление памяти данным видом кэша,
  • items_count — количество элементов кэша, в которых есть данные,
  • empty_count — количество пустых элементов кэша,
  • hit_count_limit — количество выполнений запроса, необходимых для кэширования результатов.

Пример JSON-представления строки неймспейса:

{
  "name": "test_namespace",
  "items_count": 10,
  "data_size": 0,
  "strings_waiting_to_be_deleted_size": 0,
  "storage_ok": true,
  "storage_enabled": true,
  "storage_status": "OK",
  "storage_path": "/db/qwerrty/test_namespace",
  "storage_loaded": true,
  "optimization_completed": true,
  "total": {
    "data_size": 80392,
    "indexes_size": 240,
    "cache_size": 0
  },
  "replication": {
    "last_lsn": 12000000000000018,
    "last_lsn_v2": {
      "server_id": 12,
      "counter": 18
    },
    "temporary": false,
    "incarnation_counter": 0,
    "data_hash": 316,
    "data_count": 10,
    "updated_unix_nano": 1657199872665537300,
    "ns_version": {
      "server_id": 0,
      "counter": 8
    },
    "clusterization_status": {
      "leader_id": 12,
      "role": "none"
    },
    "wal_count": 15,
    "wal_size": 342
  },
  "join_cache": {
    "total_size": 0,
    "items_count": 0,
    "empty_count": 0,
    "hit_count_limit": 2
  },
  "query_cache": {
    "total_size": 0,
    "items_count": 0,
    "empty_count": 0,
    "hit_count_limit": 2
  },
  "indexes": [
    {
      "uniq_keys_count": 1,
      "data_size": 72,
      "name": "-tuple"
    },
    {
      "uniq_keys_count": 10,
      "idset_plain_size": 240,
      "idset_cache": {
        "total_size": 0,
        "items_count": 0,
        "empty_count": 0,
        "hit_count_limit": 2
      },
      "name": "id"
    }
  ]
}

Неймспейс #perfstats

В системном неймспейсе #perfstats хранится статистика производительности неймспейсов базы данных.

Имя Тип данных Описание
name string Название неймспейса
updates object Сводная статистика по операциям обновления данных. Поля объекта описаны ниже
selects object Сводная статистика по операциям выборки данных. Поля объекта описаны ниже
transactions object Сводная статистика по транзакциям. Поля объекта:
total_count — общее количество транзакций для данного неймспейса,
total_copy_count — количество операций копирования неймспейса,
avg_steps_count — среднее количество шагов в транзакции,
min_steps_count — минимальное количество шагов транзакции,
max_steps_count — максимальное количество шагов в транзакции,
avg_prepare_time_us — среднее время подготовки транзакции,
min_prepare_time_us — минимальное время подготовки транзакции,
max_prepare_time_us — максимальное время подготовки транзакции,
avg_commit_time_us —  среднее время коммита транзакции,
min_commit_time_us — минимальное время коммита транзакции,
max_commit_time_us — максимальное время коммита транзакции,
avg_copy_time_us — среднее время копирования неймспейса,
min_copy_time_us — минимальное время копирования неймспейса,
max_copy_time_us — максимальное время копирования неймспейса.
indexes array Статистика по производительности при обращении к индексам. Поля объектов — элементов массива:
name — название индекса.
selects — сводная статистика по операциям выборки данных. Поля объекта описаны ниже.
commits — сводная статистика по операциям коммита индексов во время их фоновой оптимизации. Поля объекта описаны ниже.

Поля объектов selects, updates и commits:

  • total_queries_count — количество запросов,
  • total_avg_latency_us — средняя задержка (время выполнения запроса),
  • total_avg_lock_time_us — среднее время ожидания получения блокировок для выполнения запроса,
  • last_sec_qps — количество запросов в последнюю секунду,
  • last_sec_avg_latency_us — средняя задержка (время выполнения запроса) для запросов, выполненных за последнюю секунду,
  • last_sec_avg_lock_time_us — среднее время ожидания получения блокировок для выполнения запроса за последнюю секунду,
  • latency_stddev — стандартное отклонение задержки,
  • min_latency_us — минимальная задержка (время выполнения запроса),
  • max_latency_us — максимальная задержка (время выполнения запроса).

Пример JSON-представления строки неймспейса:

{
  "name": "test_namespace",
  "updates": {
    "total_queries_count": 0,
    "total_avg_latency_us": 0,
    "total_avg_lock_time_us": 0,
    "last_sec_qps": 0,
    "last_sec_avg_lock_time_us": 0,
    "last_sec_avg_latency_us": 0,
    "latency_stddev": 0,
    "min_latency_us": 0,
    "max_latency_us": 0
  },
  "selects": {
    "total_queries_count": 0,
    "total_avg_latency_us": 0,
    "total_avg_lock_time_us": 0,
    "last_sec_qps": 0,
    "last_sec_avg_lock_time_us": 0,
    "last_sec_avg_latency_us": 0,
    "latency_stddev": 0,
    "min_latency_us": 0,
    "max_latency_us": 0
  },
  "transactions": {
    "total_count": 0,
    "total_copy_count": 0,
    "avg_steps_count": 0,
    "min_steps_count": 0,
    "max_steps_count": 0,
    "avg_prepare_time_us": 0,
    "min_prepare_time_us": 0,
    "max_prepare_time_us": 0,
    "avg_commit_time_us": 0,
    "min_commit_time_us": 0,
    "max_commit_time_us": 0,
    "avg_copy_time_us": 0,
    "min_copy_time_us": 0,
    "max_copy_time_us": 0
  },
  "indexes": [
    {
      "name": "id",
      "selects": {
        "total_queries_count": 0,
        "total_avg_latency_us": 0,
        "total_avg_lock_time_us": 0,
        "last_sec_qps": 0,
        "last_sec_avg_lock_time_us": 0,
        "last_sec_avg_latency_us": 0,
        "latency_stddev": 0,
        "min_latency_us": 0,
        "max_latency_us": 0
      },
      "commits": {
        "total_queries_count": 1,
        "total_avg_latency_us": 67,
        "total_avg_lock_time_us": 13,
        "last_sec_qps": 0,
        "last_sec_avg_lock_time_us": 0,
        "last_sec_avg_latency_us": 0,
        "latency_stddev": 0,
        "min_latency_us": 0,
        "max_latency_us": 67
      }
    }
  ]
}

Неймспейс #queriesperfstats

В системном неймспейсе #queriesperfstats хранится сводная статистика производительности запросов к базе данных. При запуске Reindexer с конфигурацией по умолчанию запись статистики в этот неймспейс не активируется. Её следует включить вручную. Сделать это можно через Reindexer Face (раздел Config -> вкладка Profiling -> флаг Record queries perofrmance statistics) или в служебном неймспейсе #config, задав для поля queriesperfstats айтема profiling значение true.

Имя Тип данных Описание
query string Нормализованное (без конкретных значений) SQL-представление запроса
longest_query string Ненормализованное SQL-представление запроса с самым большим временем выполнения
total_queries_count int64 Общее количество запросов данного типа
total_avg_latency_us int64 Средняя задержка (время выполнения) запросов данного типа
total_avg_lock_time_us int64 Среднее время ожидания получения блокировок для выполнения запроса
last_sec_qps int64 Количество запросов данного типа в последнюю секунду
last_sec_avg_latency_us int64 Средняя задержка (время выполнения запроса) для запросов данного типа, выполненных за последнюю секунду
last_sec_avg_lock_time_us int64 Среднее время ожидания получения блокировок для выполнения запроса данного типа за последнюю секунду
min_latency_us int64 Минимальная задержка (время выполнения запроса)
max_latency_us int64 Максимальная задержка (время выполнения запроса)
latency_stddev int64 Стандартное отклонение значений времени ожидания (задержки)

Пример JSON-представления строки неймспейса:

{
  "query": "SELECT *, COUNT(*) FROM test_namespace",
  "total_queries_count": 3,
  "total_avg_lock_time_us": 59,
  "total_avg_latency_us": 822,
  "last_sec_qps": 1,
  "last_sec_avg_lock_time_us": 70,
  "last_sec_avg_latency_us": 180,
  "latency_stddev": 0,
  "min_latency_us": 0,
  "max_latency_us": 2198,
  "longest_query": "SELECT *, COUNT(*) FROM qwer LIMIT 50"
}

Неймспейс #namespaces

В системном неймспейсе #namespaces хранятся сведения обо всех неймспейсах базы данных, включая системные.

Имя Тип данных Описание
name string Название неймспейса
storage object Сведения о способе хранения данных неймспейса. Поля объекта:
enabled — флаг, указывающий, используется ли дисковое хранилище для неймспейса. Если его значение true, документы будут храниться на диске, если false — они удалятся при отключении сервера
indexes object Сведения об индексах неймспейса. Поля объекта:
name — название индекса,
field_type — тип данных поля,
index_type — тип индекса (подробнее),
is_pk — параметр указывает, что индекс является первичным ключом (подробнее),
is_array — параметр указывает, что индекс является массивом (array-индексом),
is_dense — уменьшение размера памяти, занимаемого индексным полем (подробнее),
is_sparse — строка (документ) содержит значение индекса Sparse только в том случае, если он задан специально — нет пустых (или по умолчанию) записей этого типа индексов в строке/документе (подробнее),
collate_mode — параметр указывает, включен ли режим сопоставления строк для сравнения и сортировки данных,
sort_order_letters — порядок сортировки символов,
expire_after — время жизни ttl-индекса (в секундах),
config — объект с настройками для полнотекстового индекса. Описания полей объекта — в разделе «Управление параметрами индексов»,
json_paths — имя JSON-поля (или полей), по которому строится индекс.
schema object JSON-схема неймспейса

Пример JSON-представления строки неймспейса:

{
  "name": "test_namespace",
  "storage": {
    "enabled": true
  },
  "indexes": [
    {
      "name": "id",
      "field_type": "int64",
      "index_type": "hash",
      "is_pk": true,
      "is_array": false,
      "is_dense": false,
      "is_sparse": false,
      "collate_mode": "none",
      "sort_order_letters": "",
      "expire_after": 0,
      "config": {},
      "is_sortable": true,
      "is_fulltext": false,
      "conditions": [
        "SET",
        "EQ",
        "ANY",
        "EMPTY",
        "LT",
        "LE",
        "GT",
        "GE",
        "RANGE"
      ],
      "json_paths": [
        "id"
      ]
    }
  ],
  "temporary": false,
  "schema": "{}"
}

Неймспейс #activitystats

В системном неймспейсе #activitystats хранится информация о текущих активностях пользователей базы данных. При запуске Reindexer с конфигурацией по умолчанию запись данных в этот неймспейс не активируется. Ее следует включить вручную. Сделать это можно через Reindexer Face (раздел Config -> вкладка Profiling -> флаг Activity statistics) или в служебном неймспейсе #config, задав для поля activitystats айтема profiling значение true.

Имя Тип данных Описание
client string Идентификатор клиента
user string Имя пользователя
query string Текст запроса
query_id int64 Идентификатор запроса
query_start string Время начала выполнения запроса
state string Текущее состояние запроса. Возможные значения:
in_progress — в процессе выполнения,
wait_lock — ожидание блокировки,
sending — отправка,
indexes_lookup — поиск по индексам,
select_loop — цикл пересечения выборок,
proxied_via_cluster_proxy — проксируется на другую ноду RAFT-кластера,
proxied_via_sharding_proxy — проксируется на другую шарду

Пример JSON-представления строки неймспейса:

{
  "client": "172.17.0.1:64962",
  "user": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.83 Safari/537.36",
  "query": "SELECT * FROM #activitystats",
  "query_id": 149,
  "query_start": "2022-08-01 12:39:57.405",
  "state": "sending"
}

Неймспейс #clientsstats

В системном неймспейсе #clientsstats хранится статистика по подключающимся с серверу Reindexer клиентам. Чтобы включить запись информации в нее, требуется перед запуском сервера установить значение true для параметра clientsstats в разделе metrics файла конфигурации или передать значение для него с помощью аргумента --clientsstats при конфигурировании сервера через командную строку.

Имя Тип данных Описание
connection_id int64 Идентификатор соединения
ip string IP клиента
user_name string Имя пользователя
user_rights string Уровень прав пользователя
db_name string Имя базы данных
current_activity string Текущая активность
start_time int64 Временная метка Unix времени установления подключения
recv_bytes int64 Количество принятых байтов информации
sent_bytes int64 Количество отправленных байтов информации
client_version: string Версия клиента
app_name string Имя приложения клиента
tx_count int64 Количество открытых транзакций для клиента
send_buf_bytes int64 Размер буфера отправки
last_send_ts int64 Время последней операции отправки данных (мс)
last_recv_ts int64 Время последней операции получения данных (мс)
send_rate int64 Текущая скорость отправки данных (байт/с)
recv_rate int64 Текущая скорость получения данных (байт/с)

Пример JSON-представления строки неймспейса:

{
  "connection_id": 23019,
  "ip": "192.160.192.24:45366",
  "user_name": "",
  "db_name": "test_namespace",
  "current_activity": "",
  "sent_bytes": 30039,
  "recv_bytes": 33325,
  "send_buf_bytes": 0,
  "pended_updates": 0,
  "send_rate": 0,
  "recv_rate": 0,
  "last_send_ts": 1659357748068,
  "last_recv_ts": 1659357748068,
  "user_rights": "owner",
  "start_time": 1659264748,
  "client_version": "3.5.2",
  "app_name": "Go-connector",
  "tx_count": 0,
  "is_subscribed": false,
  "updates_filter": {
    "namespaces": []
  },
  "updates_lost": 0
}

Неймспейс #replicationstats

В системном неймспейсе #replicationstats хранится статистика по репликации. Статистика по синхронной репликации хранится в айтеме с type = 'cluster', а по асинхронной — в айтеме с type = 'async'.

Для получения статистики по синхронной или асинхронной репликации выполните запрос к неймспейсу #replicationstats с обязательным условием с фильтрацией по полю type, указав значение cluster или async. Пример запроса и поля неймспейса описаны в разделе «Проверка статуса и получение статистики».