Системные неймспейсы 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
.
Пример запроса и поля неймспейса описаны в разделе «Проверка статуса и получение статистики».