Системные неймспейсы Reindexer со статистическими данными
Для каждой базы данных в Reindexer создается набор системных неймспейсов для хранения настроек и статистической информации.
Для получения их списка можно воспользоваться командой \namespaces list через утилиту reindexer_tool:
Reindexer> \namespaces list
В ответ вернется перечень всех неймспейсов базы данных. Названия системных начинаются с символа #.
Ниже представлены описания системных неймспейсов Reindexer, в которых хранится статистическая информация по базам данных, каждому неймспейсу, запросам, репликации.
Неймспейс #memstats
В системном неймспейсе #memstats хранится детальная информация о потреблении памяти каждым неймспейсом базы данных.
| Имя | Тип данных | Описание |
|---|---|---|
| name | string | Название неймспейса |
| type | string | namespace (для неймспейса с данными) или embedders (для системного неймспейса, связанного с автовекторизацией) |
| 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 | Состояние фоновой оптимизации индексов |
| storage | object | Размер памяти асинхронного хранилища. Поля:proxy_size - Общий размер памяти, занимаемый синхронной map’ой AsyncStorage (в байтах) |
| total | object | Для типа namespace. Сводка по потреблению памяти неймспейсом. Поля:data_size — общий объем хранящихся в неймспейсе записей;indexes_size — объем памяти, потребляемый индексами неймспейса;cache_size — размер памяти, занимаемый кешем данных из неймспейса;index_optimizer_memory — объем памяти, которую занимает фоновый оптимизатор индексов |
| replication | object | Для типа namespace. Статус репликации неймспейса. Значения полей описаны в разделе «Проверка статуса репликации» |
| join_cache | object | Для типа namespace. Сводная статистика Join-кеша. Хранит результаты выбора в правом неймспейсе по условию ON. Состав объекта описан ниже |
| query_cache | object | Для типа namespace. Сводная статистика Query-кеша. Хранит результаты запросов SELECT COUNT(*) с условиями WHERE. Состав объекта описан ниже |
| indexes | array | Для типа namespace. Сводка по потреблению памяти индексами неймспейса. Представляет собой массив объектов, соответствующих каждому индексу. Кроме того, помимо объявленных вами индексов, здесь отображается информация о специальном индексе -tuple. Он хранит структуру json исходного документа с неиндексированными полями. Состав объекта описан ниже |
| embedding_caches | array | Для типа embedders. Поля:cache_tag - имя кеша из конфигурации;capacity - размер кеша;cache - статистика кеша; состав описан ниже;storage_ok - true, если дисковое хранилище включено и доступно для записи;storage_status - Подробная информация о состоянии хранилища. Может содержать «OK», «DISABLED», «FAILED» или описание последней ошибки;storage_path - путь к хранилищу,storage_size - размер занимаемого дискового пространства |
| tags_matcher | object | Для типа namespace. Сводная информация о TagsMatcher‘е. Поля:tags_count - текущее количество тегов в словаре;max_tags_count - максимально возможное количество тегов в словаре;version - версия TagsMatcher‘а;state_token - StateToken |
Сводная статистика кеша:
| Имя | Тип данных | Описание |
|---|---|---|
| total_size | int64 | Общее потребление памяти данным видом кеша |
| items_count | int64 | Количество элементов кеша, в которых есть данные |
| empty_count | int64 | Количество пустых элементов кеша |
| hit_count_limit | int64 | Количество выполнений запроса, необходимых для кеширования результатов |
Cтатистика индекса:
| Имя | Тип данных | Описание |
|---|---|---|
| name | string | Название индекса |
| uniq_keys_count | int64 | Количество уникальных значений ключей, хранящихся в индексе |
| data_size | int64 | Объем памяти, занимаемый документами, хранящимися по индексу |
| sort_orders_size | int64 | Общее потребление памяти оператором SELECT и операторами сравнения GT и LT. Параметр измеряется только к индексам типа tree |
| idset_plain_size | int64 | Общее потребление памяти обратными индексными векторами. Для индексов store всегда равно нулю |
| idset_btree_size | int64 | Общее потребление памяти структурами b-tree с обратным индексом. Для индексных полей типа dense и store значение всегда равно нулю |
| indexing_struct_size | int64 | Общее потребление памяти структурами полнотекстового или векторного поиска |
| vectors_keeper_size | int64 | Общее потребление памяти (в байтах) общими структурами хранения векторов (только индексы ANN) |
| idset_cache | object | Сводная статистика Idset-кеша. Хранит объединенные результаты обратного индекса поля SELECT field IN(…) by IN(…) keys. Состав объекта описан здесь |
| tracked_updates_count | int64 | Количество обновлений, ожидающих в трекере обновлений индекса |
| tracked_updates_buckets | int64 | Количество сегментов в карте трекера обновлений индекса |
| tracked_updates_size | int64 | Объем памяти, занимаемой обновлениями индекса, которые накопились после его последней оптимизации. Если обновлений слишком много, они сбросятся, что приведёт к полной пересортировке индекса при следующем вызове оптимизатора |
| tracked_updates_overflow | int64 | Переполнение updates tracker |
| is_built | bool | Опциональный флаг, говорящий о том, построена ли индексная структура для векторного индекса |
| upsert_embedder | object | Статус updates embedder’а. Состав объекта описан ниже |
| query_embedder | object | Статус query embedder’а. Состав объекта описан ниже |
Cтатус embedder’а:
| Имя | Тип данных | Описание |
|---|---|---|
| status | object | Статус embeder’а. Поля:last_request_result- статус выполнения последнего запроса (OK или ERROR);last_error - информация о последней ошибке векторизации. Состав объекта описан ниже |
Последняя ошибка embedder’а:
| Имя | Тип данных | Описание |
|---|---|---|
| code | int64 | Код ошибки. 0 означает, что ошибки не было |
| message | string | Описание ошибки |
Неймспейс #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 — максимальное время копирования неймспейса. |
| join_cache | object | Статистика jojn кеш. Поля описаны ниже |
| query_count_cache | object | Статистика кеша агрегация. Поля описаны ниже |
| indexes | array | Статистика по производительности при обращении к индексам. Поля объекта описаны ниже |
Описание объекта PerfStat:
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— максимальная задержка (время выполнения запроса).
Описание объекта LRUCachePerfStat:
| Имя | Тип данных | Описание |
|---|---|---|
| total_queries | int64 | Колличество запросов к кешу |
| cache_hit_rate | float | Коэффициент попадания в кеш |
| is_active | bool | Используется ли кеш в данный момент. Обычно имеет значение false для незакомиченных индексов |
Описание объекта IndexPerfStat:
| Имя | Тип данных | Описание |
|---|---|---|
| name | string | Название индекса |
| commits | object | Cводная статистика по операциям коммита индексов во время их фоновой оптимизации. Поля объекта описаны выше |
| selects | object | Сводная статистика по операциям выборки данных. Поля объекта описаны выше |
| cache | object | Опционально. Статистика производительности для кеша IdSets в индексе (или полнотекстового кеша для текстовых индексов) |
| upsert_embedder | object | Статичтика upsert эмбедера. Поля описаны ниже |
| query_embedder | object | Статичтика query эмбедера. Поля описаны ниже |
Описание объекта EmbedderPerfStat:
| Имя | Тип данных | Описание |
|---|---|---|
| total_queries_count | int64 | Общее количество обращений к конкретном эмбедеру |
| total_embed_documents_count | int64 | Общее количество запрошенных векторов (кеш+сеть) |
| last_sec_qps | int64 | Количество обращений к эмбедеру за последнюю секунду |
| last_sec_dps | int64 | Количество векторизованных документов за последнюю секунду |
| total_errors_count | int64 | Общее количество ошибок обращения к эмбедеру |
| last_sec_errors_count | int64 | Количество ошибок за последнюю секунду |
| conn_in_use | int64 | Текущее количество используемых коннектов |
| last_sec_avg_conn_in_use | int64 | Среднее количество используемых коннектов за последнюю секунду |
| total_avg_latency_us | int64 | Среднее общее время автовекторизации |
| last_sec_avg_latency_us | int64 | Среднее время автовекторизации (за последнюю секунду) |
| max_latency_us | int64 | Максимальное общее время автовекторизации (за всё время) |
| min_latency_us | int64 | Минимальное общее время автовекторизации (за всё время) |
| total_avg_conn_await_latency_us | int64 | Среднее время ожидания коннекта из пула (за всё время) |
| last_sec_avg_conn_await_latency_us | int64 | Среднее время ожидания коннекта из пула (за последнюю секунду) |
| total_avg_embed_latency_us | int64 | Среднее время автовекторизации при кеш-промахе (за всё время) |
| last_sec_avg_embed_latency_us | int64 | Среднее время автовекторизации при кеш-промахе (за последнюю секунду) |
| max_embed_latency_us | int64 | Максимальное время автовекторизации при кеш-промахе (за всё время) |
| min_embed_latency_us | int64 | Минимальное время автовекторизации при кеш-промахе (за всё время) |
| total_avg_cache_latency_us | int64 | Среднее время автовекторизации при кеш-попадании (за всё время) |
| last_sec_avg_cache_latency_us | int64 | Среднее время автовекторизации при кеш-попадании (за последнюю секунду) |
| max_cache_latency_us | int64 | Максимальное время автовекторизации при кеш-попадании (за всё время) |
| min_cache_latency_us | int64 | Минимальное время автовекторизации при кеш-попадании (за всё время) |
| cache | object | Статистика кеша эмбедера. Содержит следующие поля:cache_tag - таг кеша из конфигурации;total_queries - колличество запросов к кешу;cache_hit_rate - коэффициент попадания в кеш;is_active - используется ли кеш в данный момент; обычно имеет значение false для незакомиченных индексов. |
Неймспейс #queriesperfstats
В системном неймспейсе #queriesperfstats хранится сводная статистика производительности SELECT-запросов к базе данных.
При запуске 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 | Стандартное отклонение значений времени ожидания (задержки) |
Неймспейс #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-схема неймспейса |
Неймспейс #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 — проксируется на другую шарду |
Неймспейс #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 | Текущая скорость получения данных (байт/с) |
Неймспейс #replicationstats
В системном неймспейсе #replicationstats хранится статистика по репликации.
Статистика по синхронной репликации хранится в айтеме с type = 'cluster', а по асинхронной — в айтеме с type = 'async'.
Для получения статистики по синхронной или асинхронной репликации выполните запрос к неймспейсу #replicationstats с обязательным условием с фильтрацией по полю type, указав значение cluster или async.
Пример запроса и поля неймспейса описаны в разделе «Проверка статуса и получение статистики».