Системные представления базы данных

Для получения служебной информации о состоянии базы данных можно обращаться к системным представлениям (system views). Они доступны из корня дерева базы данных и используют системный префикс пути .sys.

Примечание

Частое обращение к системным представлениям приводит к дополнительной нагрузке на базу данных, особенно в случае большого размера базы. Превышение частоты в 1 запрос в секунду не рекомендуется.

Партиции

Следующее системное представление хранит детализированную информацию об партициях таблиц базы данных:

  • partition_stats — содержит информацию о моментальных метриках и кумулятивных счетчиках операций. К первым относятся, например, данные о нагрузке на CPU или количестве выполняемых транзакций. Ко вторым — общее количество прочитанных строк.

Предназначено, например, для выявления неравномерно нагруженных партиций или отображения размера данных в них.

Моментальные метрики (NodeId, AccessTime, CPUCores и т.д.) содержат мгновенные значения.
Кумулятивные (не моментальные) метрики (RowReads, RowUpdates, LocksAcquired и т.д.) хранят накопленные значения с момента последнего старта таблетки (StartTime), обслуживающей партицию.

Структура представления:

Колонка Описание Тип данных Моментальная/кумулятивная
OwnerId Идентификатор SchemeShard таблицы.
Ключ: 0.
Uint64 Моментальная
PathId Идентификатор пути в SchemeShard.
Ключ: 1.
Uint64 Моментальная
PartIdx Порядковый номер партиции.
Ключ: 2.
Uint64 Моментальная
FollowerId Идентификатор реплики таблетки партиции. Значение 0 означает лидера.
Ключ: 3.
Uint32 Моментальная
DataSize Приблизительный размер данных партиции в байтах. Uint64 Моментальная
RowCount Приблизительное количество строк. Uint64 Моментальная
IndexSize Размер индекса партиции в байтах. Uint64 Моментальная
CPUCores Моментальное значение нагрузки на партицию (доля времени ядра процессора, затраченного актором партиции). Double Моментальная
TabletId Идентификатор таблетки партиции. Uint64 Моментальная
Path Полный путь к таблице. Utf8 Моментальная
NodeId Идентификатор ноды, на которой в данный момент обслуживается партиция. Uint32 Моментальная
StartTime Последний момент запуска таблетки партиции. Timestamp Моментальная
AccessTime Последний момент чтения из партиции. Timestamp Моментальная
UpdateTime Последний момент записи в партицию. Timestamp Моментальная
RowReads Количество чтений по ключу. Uint64 Кумулятивная
RowUpdates Количество записанных строк . Uint64 Кумулятивная
RowDeletes Количество удалённых строк. Uint64 Кумулятивная
RangeReads Количество чтений по диапазону ключей. Uint64 Кумулятивная
RangeReadRows Количество строк, прочитанных в диапазонах. Uint64 Кумулятивная
InFlightTxCount Количество исполняющихся транзакций. Uint64 Моментальная
ImmediateTxCompleted Количество завершившихся одношардовых транзакций. Uint32 Кумулятивная
CoordinatedTxCompleted Количество завершившихся распределенных транзакций. Uint64 Кумулятивная
TxRejectedByOverload Количество транзакций, отменённых по причине высокой нагрузки. Uint64 Кумулятивная
TxRejectedByOutOfStorage Количество транзакций, отменённых из-за нехватки места в хранилище. Uint64 Кумулятивная
TxCompleteLag Задержка выполнения транзакций (насколько транзакции отстают от запланированного времени). Interval Моментальная
LastTtlRunTime Последний момент запуска очистки партиции по TTL Timestamp Моментальная
LastTtlRowsProcessed Количество проверенных строк партиции при последней очистке по TTL Uint64 Моментальная
LastTtlRowsErased Количество удалённых строк партиции при последней очистке по TTL Uint64 Моментальная
LocksAcquired Количество установленных блокировок. Uint64 Кумулятивная
LocksWholeShard Количество установленных блокировок "весь шард". Uint64 Кумулятивная
LocksBroken Количество сломанных блокировок. Uint64 Кумулятивная

Примеры запросов

Топ-5 самых загруженных партиций среди всех таблиц базы данных:

SELECT
    Path,
    PartIdx,
    CPUCores
FROM `.sys/partition_stats`
ORDER BY CPUCores DESC
LIMIT 5

Список таблиц базы с размерами и нагрузкой в моменте:

SELECT
    Path,
    COUNT(*) as Partitions,
    SUM(RowCount) as Rows,
    SUM(DataSize) as Size,
    SUM(CPUCores) as CPU
FROM `.sys/partition_stats`
GROUP BY Path

Список таблиц базы с наибольшим числом сломанных блокировок:

SELECT
    Path,
    COUNT(*) as Partitions,
    SUM(LocksBroken) as TotalLocksBroken
FROM `.sys/partition_stats`
GROUP BY Path
ORDER BY TotalLocksBroken DESC

Топы запросов

Следующие системные представления хранят данные для анализа пользовательских запросов.

Наибольшее полное время выполнения запроса:

  • top_queries_by_duration_one_minute — данные разбиты на минутные интервалы, содержит данные за последние 6 часов;
  • top_queries_by_duration_one_hour — данные разбиты на часовые интервалы, содержит данные за последние 2 недели.

Наибольшее количество прочитанных из таблицы байт:

  • top_queries_by_read_bytes_one_minute — данные разбиты на минутные интервалы, содержит данные за последние 6 часов;
  • top_queries_by_read_bytes_one_hour — данные разбиты на часовые интервалы, содержит данные за последние 2 недели.

Наибольшее затраченное процессорное время:

  • top_queries_by_cpu_time_one_minute — данные разбиты на минутные интервалы, содержит данные за последние 6 часов;
  • top_queries_by_cpu_time_one_hour — данные разбиты на часовые интервалы, содержит данные за последние 2 недели.

Запросы с одним и тем же текстом объединяются, в выдачу попадает запрос с максимальным значением соответствующей метрики.
Каждый временной интервал (минута или час) содержит ТОП-5 запросов, выполненных в этот временной интервал.

Поля, предоставляющие информацию о затраченном процессорном времени (...CPUTime), выражены в микросекундах.

Текст запроса ограничен 10 килобайтами.

Все представления имеют одинаковую структуру:

Колонка Описание
IntervalEnd Момент окончания минутного или часового интервала, за который собрана статистика.
Тип: Timestamp.
Ключ: 0.
Rank Ранг запроса в топе.
Тип: Uint32.
Ключ: 1.
QueryText Текст запроса.
Тип: Utf8.
Duration Полное время исполнения запроса.
Тип: Interval.
EndTime Момент окончания исполнения запроса.
Тип: Timestamp.
Type Тип запроса ("data", "scan", "script").
Тип: String.
ReadRows Количество прочитанных строк.
Тип: Uint64.
ReadBytes Количество прочитанных байт.
Тип: Uint64.
UpdateRows Количество записанных строк.
Тип: Uint64.
UpdateBytes Количество записанных байт.
Тип: Uint64.
DeleteRows Количество удалённых строк.
Тип: Uint64.
DeleteBytes Количество удалённых байт.
Тип: Uint64.
Partitions Количество партиций таблиц, участвовавших в исполнении запроса.
Тип: Uint64.
UserSID Security ID пользователя.
Тип: String.
ParametersSize Размер параметров запроса в байтах.
Тип: Uint64.
CompileDuration Длительность компиляции запроса.
Тип: Interval.
FromQueryCache Использовался ли кэш подготовленных запросов.
Тип: Bool.
CPUTime Общее процессорное время, использованное для исполнения запроса (микросекунды).
Тип: Uint64.
ShardCount Количество шардов, участвующих в исполнении запроса.
Тип: Uint64.
SumShardCPUTime Общее процессорное время, затраченное в шардах.
Тип: Uint64.
MinShardCPUTime Минимальное процесорное время, затраченное в шардах.
Тип: Uint64.
MaxShardCPUTime Максимальное процессорное время, затраченное в шардах.
Тип: Uint64.
ComputeNodesCount Количество вычислительных нод, задействованных в исполнении запроса.
Тип: Uint64.
SumComputeCPUTime Общее процессорное время, затраченное в вычислительных нодах.
Тип: Uint64.
MinComputeCPUTime Минимальное процессорное время, затраченное в вычислительных нодах.
Тип: Uint64.
MaxComputeCPUTime Максимальное процессорное время, затраченное в вычислительных нодах.
Тип: Uint64.
CompileCPUTime Процессорное время, затраченное на компиляцию запроса.
Тип: Uint64.
ProcessCPUTime Процессорное время, затраченное на общую обработку запроса.
Тип: Uint64.

Примеры запросов

Топ запросов по времени выполнения. Запрос выполняется к представлению .sys/top_queries_by_duration_one_minute:

PRAGMA AnsiInForEmptyOrNullableItemsCollections;
$last = (
    SELECT
        MAX(IntervalEnd)
    FROM `.sys/top_queries_by_duration_one_minute`
);
SELECT
    IntervalEnd,
    Rank,
    QueryText,
    Duration
FROM `.sys/top_queries_by_duration_one_minute`
WHERE IntervalEnd IN $last

Запросы, прочитавшие больше всего байт. Запрос выполняется к представлению .sys/top_queries_by_read_bytes_one_minute:

SELECT
    IntervalEnd,
    QueryText,
    ReadBytes,
    ReadRows,
    Partitions
FROM `.sys/top_queries_by_read_bytes_one_minute`
WHERE Rank = 1

Подробная информация о запросах

Следующее системное представление содержит подробную информацию о запросах:

  • query_metrics_one_minute — данные разбиты по минутным интервалам, содержит до 256 запросов за последние 6 часов.

Каждая строка представления содержит информацию о множестве случившихся за интервал запросов с одинаковым текстом. Поля представления содержат минимальное, максимальное и суммарное значение по каждой отслеживаемой характеристике запроса. В пределах интервала запросы отсортированы по убыванию суммарного потраченного процессорного времени.

Ограничения:

  • текст запроса ограничен 10 килобайтами;
  • статистика может быть неполной, если база испытывает сильную нагрузку.

Структура представления:

Колонка Описание
IntervalEnd Момент окончания минутного интервала, за который собрана статистика
Тип: Timestamp.
Ключ: 0.
Rank Ранг запроса в пределах интервала (по полю SumCPUTime).
Тип: Uint32.
Ключ: 1.
QueryText Текст запроса.
Тип: Utf8.
Count Количество запусков запроса.
Тип: Uint64.
SumDuration Общая длительность запросов.
Тип: Interval.
MinDuration Минимальная длительность запроса.
Тип: Interval.
MaxDuration Максимальная длительность запроса.
Тип: Interval.
SumCPUTime Общее затраченное процессорное время.
Тип: Uint64.
MinCPUTime Минимальное затраченное процессорное время.
Тип: Uint64.
MaxCPUTime Максимальное затраченное процессорное время.
Тип: Uint64.
SumReadRows Общее количество прочитанных строк.
Тип: Uint64.
MinReadRows Минимальное количество прочитанных строк.
Тип: Uint64.
MaxReadRows Максимальное количество прочитанных строк.
Тип: Uint64.
SumReadBytes Общее количество прочитанных байт.
Тип: Uint64.
MinReadBytes Минимальное количество прочитанных байт.
Тип: Uint64.
MaxReadBytes Максимальное количество прочитанных байт.
Тип: Uint64.
SumUpdateRows Общее количество записанных строк.
Тип: Uint64.
MinUpdateRows Минимальное количество записанных строк.
Тип: Uint64.
MaxUpdateRows Максимальное количество записанных строк.
Тип: Uint64.
SumUpdateBytes Общее количество записанных байт.
Тип: Uint64.
MinUpdateBytes Минимальное количество записанных байт.
Тип: Uint64.
MaxUpdateBytes Максимальное количество записанных байт.
Тип: Uint64.
SumDeleteRows Общее количество удалённых строк.
Тип: Uint64.
MinDeleteRows Минимальное количество удалённых строк.
Тип: Uint64.
MaxDeleteRows Максимальное количество удалённых строк.
Тип: Uint64.
LocksBrokenAsBreaker Количество блокировок, которые сломал данный запрос.
Тип: Uint64.
LocksBrokenAsVictim Количество блокировок данного запроса, которые были сломаны.
Тип: Uint64.

Примечание

В данную статистику не входят:

  • Блокировки, сломанные из-за изменений схемы, TTL, асинхронной репликации
  • Блокировки, сломанные из-за разделения или слияния партиций
  • Блокировки, сломанные при перезапуске таблеток
  • Блокировки, сломанные при коммите интерактивных транзакций (когда COMMIT выполняется отдельным запросом)

Примеры запросов

Топ-10 запросов за последние 6 часов по общему количеству записанных строк в минутном интервале:

SELECT
    SumUpdateRows,
    Count,
    QueryText,
    IntervalEnd
FROM `.sys/query_metrics_one_minute`
ORDER BY SumUpdateRows DESC LIMIT 10

Недавние запросы, прочитавшие больше всего байт за минуту:

SELECT
    IntervalEnd,
    SumReadBytes,
    MinReadBytes,
    SumReadBytes / Count as AvgReadBytes,
    MaxReadBytes,
    QueryText
FROM `.sys/query_metrics_one_minute`
WHERE SumReadBytes > 0
ORDER BY IntervalEnd DESC, SumReadBytes DESC
LIMIT 100

Подробная информация о запросах сессий

Следующее системное представление содержит подробную информацию о текущих сессиях и запросах, выполняющихся в них.

  • .sys/query_sessions — содержит информацию о сессиях и выполняемых в них запросах.
Колонка Описание
SessionId Уникальный идентификатор сессии.
Тип: Utf8.
Ключ: 0.
NodeId Идентификатор узла, на котором запущена сессия.
Тип: Uint32.
State Текущее состояние сессии.
Тип: Utf8.
Query Текст последнего или текущего выполняемого запроса.
Тип: Utf8.
QueryCount Количество запросов, выполненных в рамках данной сессии.
Тип: Uint32.
ClientAddress Сетевой адрес клиента, инициировавшего сессию.
Тип: Utf8.
ClientPID Идентификатор процесса (PID) клиентского приложения.
Тип: Utf8.
ClientUserAgent Информация о клиентском ПО (User-Agent).
Тип: Utf8.
ClientSdkBuildInfo Информация о сборке SDK клиента.
Тип: Utf8.
ApplicationName Имя приложения, указанное клиентом при подключении.
Тип: Utf8.
SessionStartAt Время начала (создания) сессии.
Тип: Timestamp.
QueryStartAt Время начала выполнения текущего запроса.
Тип: Timestamp.
StateChangeAt Время последнего изменения состояния сессии.
Тип: Timestamp.
UserSID Security ID пользователя, владеющего сессией.
Тип: Utf8.
WmPoolId Идентификатор пула Workload Manager, в котором выполняется запрос сессии.
Тип: Utf8.
WmState Состояние запроса в Workload Manager.
Тип: Utf8.
WmEnterTime Время, когда запрос перешел в статус PENDING или DELAYED.
Тип: Timestamp.
WmExitTime Время, когда запрос передан на выполнение.
Тип: Timestamp.

Возможные значения поля WmState:

  • NONE - Не обрабатывается.
  • PENDING - Обрабатывается (в процессе классификации/маршрутизации).
  • DELAYED - В очереди.
  • EXITED - Передан на исполнение.

Возможные значения поля State:

  • IDLE - Сессия ожидает запроса.
  • EXECUTING - Выполняется запрос.

Примеры запросов

Просмотр всех активных сессий:

SELECT * FROM `.sys/query_sessions`

Топ-20 самых длительных выполняющихся запросов:

SELECT
    Query,
    SessionId,
    NodeId,
    QueryStartAt
FROM `.sys/query_sessions`
WHERE State = 'EXECUTING'
ORDER BY QueryStartAt ASC
LIMIT 20

Поиск сессий приложения с фильтрацией по пулу Workload Manager:

SELECT
    SessionId,
    Query,
    State,
    WmState,
    ClientAddress
FROM `.sys/query_sessions`
WHERE ApplicationName = 'my_analytics_app'
  AND WmPoolId = 'heavy_queries'

Кэш компиляции запросов

Следующее системное представление содержит информацию о запросах, хранящихся в кэше компиляции на всех нодах кластера:

  • compile_cache_queries — содержит информацию о запросах в кэше компиляции всех нод кластера.

Важно

Системное представление compile_cache_queries недоступно в режиме serverless.

У каждой ноды кластера есть собственный кэш скомпилированных запросов. Этот кэш используется всеми сессиями, запущенными на данной ноде: если во время выполнения запроса его текст уже есть в кэше, дополнительная компиляция не требуется.

Системное представление compile_cache_queries позволяет получить данные о состоянии кэша на всех или выбранных нодах кластера. При выполнении запроса к этому представлению запросы отправляются на каждую ноду, если только не задано ограничение по NodeId в условии WHERE. В ответ возвращается актуальная информация о содержимом кэша для каждой ноды, а итоговая таблица объединяет полученные данные.

Структура представления:

Колонка Описание
NodeId Идентификатор ноды, на которой хранится запрос в кэше.
Тип: Uint32.
Ключ: 0.
QueryId Уникальный идентификатор запроса в кэше ноды.
Тип: Utf8.
Ключ: 1.
Query Текст запроса. Если запрос больше 10 КБ, он обрезается.
Тип: Utf8.
AccessCount Количество попаданий по тексту запроса в кэше.
Тип: Uint64.
CompiledAt Время компиляции запроса.
Тип: Timestamp.
UserSID Security ID пользователя, от имени которого был скомпилирован запрос. Может быть пустым для системных запросов.
Тип: Utf8.
LastAccessedAt Время последнего обращения к результату компиляции запроса в кэше.
Тип: Timestamp.
CompilationDurationMs Длительность компиляции запроса в миллисекундах.
Тип: Uint64.
Warnings Предупреждения, возникшие при компиляции запроса.
Тип: Utf8.
Metadata Типы параметров запроса в формате JSON. Содержит ключ parameters с именами параметров и их типами.
Тип: Utf8.
IsTruncated Флаг, указывающий, был ли текст запроса обрезан из-за превышения лимита в 10 КБ.
Тип: Bool.
QueryType Тип запроса, значение одно из:
QUERY_TYPE_SQL_DML — Table Service
QUERY_TYPE_SQL_GENERIC_QUERY — Query Service
QUERY_TYPE_SQL_GENERIC_CONCURRENT_QUERY — Query Service в конкурентном режиме
Для старых записей может быть пустым.
Тип: Utf8.
Syntax Синтаксис запроса, значение одно из:
SYNTAX_YQL_V1 — YQL
SYNTAX_PG — PostgreSQL-совместимый синтаксис
SYNTAX_UNSPECIFIED — для старых записей без информации о синтаксисе
Тип: Utf8.

Примеры запросов

Просмотр всех запросов в кэше компиляции:

SELECT * FROM `.sys/compile_cache_queries`

Топ-20 самых популярных запросов по количеству обращений с 3 нод:

SELECT
    Query,
    SUM(AccessCount) AS Hits
FROM `.sys/compile_cache_queries`
WHERE NodeId IN (50000, 50001, 50003)
GROUP BY Query
ORDER BY Hits DESC
LIMIT 20

Статистика активности по пользователям:

SELECT
    UserSID,
    COUNT(DISTINCT QueryId) AS Plans,
    SUM(AccessCount) AS Hits,
    AVG(CompilationDurationMs) AS AvgCompileMs
FROM `.sys/compile_cache_queries`
GROUP BY UserSID
ORDER BY Hits DESC

Поиск запросов с длительной компиляцией:

SELECT
    Query,
    NodeId,
    CompilationDurationMs,
    AccessCount
FROM `.sys/compile_cache_queries`
WHERE CompilationDurationMs > 1000
ORDER BY CompilationDurationMs DESC

История перегруженных партиций

Следующие системные представления содержат историю моментов высокой нагрузки на отдельные партиции таблиц БД:

  • top_partitions_one_minute — данные разбиты на минутные интервалы, содержит историю за последние 6 часов;
  • top_partitions_one_hour — данные разбиты на часовые интервалы, содержит историю за последние 2 недели.

В представления попадают партиции с пиковой нагрузкой более 70 % (CPUCores > 0,7). В пределах одного интервала партиции ранжированы по пиковому значению нагрузки.

Оба представления содержат одинаковый набор полей:

Ключами представления являются:

  • IntervalEnd - момент окончания интервала;
  • Rank - ранг партиции по пиковой нагрузке CPUCores в этом интервале.

Например, если в таблице есть 10 партиций, то top_partitions_one_hour для часового интервала "20.12.2024 10:00-11:00" выдаст 10 строк, отсортированных по порядку убывания CPUCores. У них будет Rank от 1 до 10 и одинаковый IntervalEnd "20.12.2024 11:00".

Колонка Описание
IntervalEnd Момент окончания минутного или часового интервала, за который собрана статистика.
Тип: Timestamp.
Ключ: 0.
Rank Ранг партиции в пределах интервала (по CPUCores).
Тип: Uint32.
Ключ: 1.
TabletId Идентификатор таблетки, обслуживающей партицию.
Тип: Uint64.
FollowerId Идентификатор реплики таблетки партиции. Значение 0 означает лидера.
Тип: Uint32
Path Полный путь к таблице.
Тип: Utf8.
PeakTime Момент пикового значения в пределах интервала.
Тип: Timestamp.
CPUCores Пиковое значение нагрузки на партицию (доля времени ядра процессора, затраченного актором партиции).
Тип: Double.
NodeId Идентификатор ноды, на которой находилась партиция в момент пика.
Тип: Uint32.
DataSize Приблизительный размер партиции в байтах в момент пика.
Тип: Uint64.
RowCount Приблизительное количество строк в момент пика.
Тип: Uint64.
IndexSize Размер индекса партиции в таблетке в момент пика.
Тип: Uint64.
InFlightTxCount Количество транзакций, находящихся в процессе исполнения в момент пика.
Тип: Uint32.

Примеры запросов

Следующий запрос выводит партиции с потреблением CPU более 70% в указанном интервале времени, с идентификаторами таблеток и их размерами на момент превышения. Запрос выполняется к представлению .sys/top_partitions_one_minute, которое содержит данные за последние 6 часов с разбиением по минутным интервалам:

SELECT
    IntervalEnd,
    CPUCores,
    Path,
    TabletId,
    DataSize
FROM `.sys/top_partitions_one_minute`
WHERE CPUCores > 0.7
AND IntervalEnd BETWEEN Timestamp("2000-01-01T00:00:00Z") AND Timestamp("2099-12-31T00:00:00Z")
ORDER BY IntervalEnd desc, CPUCores desc

Следующий запрос выводит партиции с потреблением CPU более 90% в указанном интервале времени, с идентификаторами таблеток и их размерами на момент превышения. Запрос выполняется к представлению .sys/top_partitions_one_hour, которое содержит данные за последние 2 недели с разбиением по часовым интервалам:

SELECT
    IntervalEnd,
    CPUCores,
    Path,
    TabletId,
    DataSize
FROM `.sys/top_partitions_one_hour`
WHERE CPUCores > 0.9
AND IntervalEnd BETWEEN Timestamp("2000-01-01T00:00:00Z") AND Timestamp("2099-12-31T00:00:00Z")
ORDER BY IntervalEnd desc, CPUCores desc

История партиций со сломанными блокировками

Следующие системные представления содержат историю моментов с ненулевым числом сломанных блокировок LocksBroken в отдельных партициях таблиц БД:

  • top_partitions_by_tli_one_minute — данные разбиты на минутные интервалы, содержит историю за последние 6 часов;
  • top_partitions_by_tli_one_hour — данные разбиты на часовые интервалы, содержит историю за последние 2 недели.

Представления выдают топ-10 партиций с ненулевым числом сломанных блокировок LocksBroken. В пределах одного интервала партиции ранжированы по числу сломанных блокировок LocksBroken.

Ключами представлений являются:

  • IntervalEnd - момент окончания интервала;
  • Rank - ранг партиции по числу сломанных блокировок LocksBroken в этом интервале.

Например, top_partitions_by_tli_one_hour для часового интервала "20.12.2024 10:00-11:00" выдаст 10 строк, отсортированных по порядку убывания LocksBroken. У них будет Rank от 1 до 10 и одинаковый IntervalEnd "20.12.2024 11:00".

Оба представления содержат одинаковый набор полей:

Колонка Описание
IntervalEnd Момент окончания минутного или часового интервала, за который собрана статистика.
Тип: Timestamp.
Ключ: 0.
Rank Ранг партиции в пределах интервала (по LocksBroken).
Тип: Uint32.
Ключ: 1.
TabletId Идентификатор таблетки, обслуживающей партицию.
Тип: Uint64.
FollowerId Идентификатор реплики таблетки партиции. Значение 0 означает лидера.
Тип: Uint32
Path Полный путь к таблице.
Тип: Utf8.
LocksAcquired Число установленных блокировок "на диапазон ключей" в данном интервале.
Тип: Uint64.
LocksWholeShard Число установленных блокировок "на всю партицию" в данном интервале.
Тип: Uint64.
LocksBroken Число сломанных блокировок в данном интервале.
Тип: Uint64.
NodeId Идентификатор ноды, на которой находилась партиция в момент пика.
Тип: Uint32.
DataSize Приблизительный размер партиции в байтах в момент пика.
Тип: Uint64.
RowCount Приблизительное количество строк в момент пика.
Тип: Uint64.
IndexSize Размер индекса партиции в таблетке в момент пика.
Тип: Uint64.

Примеры запросов

Следующий запрос выводит партиции в указанном интервале времени, с идентификаторами таблеток и числом сломанных блокировок. Запрос выполняется к представлению .sys/top_partitions_by_tli_one_minute:

SELECT
    IntervalEnd,
    LocksBroken,
    Path,
    TabletId
FROM `.sys/top_partitions_by_tli_one_hour`
WHERE IntervalEnd BETWEEN Timestamp("2000-01-01T00:00:00Z") AND Timestamp("2099-12-31T00:00:00Z")
ORDER BY IntervalEnd desc, LocksBroken desc

Информация о пулах ресурсов

Системное представление resource_pools содержит информацию о настройках пулов ресурсов.

Структура системного представления:

Колонка Описание
Name Имя пула ресурсов.
Тип: Utf8.
Ключ: 0.
ConcurrentQueryLimit Максимальное количество параллельно выполняющихся запросов в пуле ресурсов.
Тип: Int32.
QueueSize Максимальный размер очереди ожидания.
Тип: Int32.
DatabaseLoadCpuThreshold Порог загрузки CPU всей базы данных, в процентах, после которого запросы не отправляются на выполнение и остаются в очереди.
Тип: Double.
ResourceWeight Веса для распределения ресурсов между пулами.
Тип: Double.
TotalCpuLimitPercentPerNode Процент доступного CPU, который могут использовать все запросы на узле в данном пуле ресурсов.
Тип: Double.
QueryCpuLimitPercentPerNode Процент доступного CPU на узле для одного запроса в пуле ресурсов.
Тип: Double.
QueryMemoryLimitPercentPerNode Процент доступной памяти на узле, который может использовать запрос в данном пуле ресурсов.
Тип: Double.

Пример

Следующий запрос выводит информацию о настройках пула ресурсов с именем default:

SELECT
    Name,
    ConcurrentQueryLimit,
    QueueSize,
    DatabaseLoadCpuThreshold,
    ResourceWeight,
    TotalCpuLimitPercentPerNode,
    QueryCpuLimitPercentPerNode,
    QueryMemoryLimitPercentPerNode
FROM `.sys/resource_pools`
WHERE Name = "default";

Информация о классификаторах пулов ресурсов

Системное представление resource_pools_classifiers содержит информацию о настройках классификаторов пулов ресурсов.

Структура системного представления:

Колонка Описание
Name Имя классификатора пула ресурсов.
Тип: Utf8.
Ключ: 0.
Rank Приоритет выбора классификатора пулов ресурсов.
Тип: Int64.
MemberName Пользователь или группа пользователей, которые будут отправлены в указанный пул ресурсов.
Тип: Utf8.
ResourcePool Имя пула ресурсов, в который будут отправлены запросы.
Тип: Utf8.

Пример

Следующий запрос выводит информацию о настройках классификатора пула ресурсов с именем olap:

SELECT
    Name,
    Rank,
    MemberName,
    ResourcePool
FROM `.sys/resource_pools_classifiers`
WHERE Name = "olap";

Пользователи, группы и права доступа

Следующие системные представления содержат информацию о пользователях, группах доступа, членстве пользователей в группах, а также о предоставленных правах доступа группам или непосредственно пользователям.

Информация о пользователях

Представление auth_users содержит список локальных пользователей YDB. В него не входят пользователи, аутентифицированные через внешние системы, такие как LDAP.

Полный доступ к этому представлению имеют администраторы. Обычные пользователи могут просматривать только свои собственные данные.

Структура таблицы:

Колонка Описание
Sid SID пользователя.
Тип: Utf8.
Ключ: 0.
IsEnabled Указывает, разрешён ли вход данному пользователю; используется для явной блокировки администратором. Независим от IsLockedOut.
Тип: Bool.
IsLockedOut Указывает, что данный пользователь автоматически заблокирован из-за превышения количества неудачных аутентификаций. Не зависит от IsEnabled.
Тип: Bool.
CreatedAt Время создания пользователя.
Тип: Timestamp.
LastSuccessfulAttemptAt Время последней успешной аутентификации.
Тип: Timestamp.
LastFailedAttemptAt Время последней неудачной аутентификации.
Тип: Timestamp.
FailedAttemptCount Количество неудачных аутентификаций.
Тип: Uint32.
PasswordHash JSON-строка, содержащая хеш пароля, соль и алгоритм хеширования.
Тип: Utf8.

Информация о группах

Представление auth_groups содержит список групп доступа.

Доступ к этому представлению имеют только администраторы.

Структура таблицы:

Колонка Описание
Sid SID группы.
Тип: Utf8.
Ключ: 0.

Информация о членстве в группах

Представление auth_group_members содержит информацию о членстве в группах доступа.

Доступ к этому представлению имеют только администраторы.

Структура таблицы:

Колонка Описание
GroupSid SID группы.
Тип: Utf8.
Ключ: 0.
MemberSid SID участника группы. Может быть указан как SID пользователя, так и SID группы.
Тип: Utf8.
Ключ: 1.

Информация о правах доступа

Представления содержат список выданных прав доступа.

Включают два представления:

  • auth_permissions: Явно выданные права доступа.
  • auth_effective_permissions: Эффективные права доступа с учётом наследования.

Пользователю в данном представлении отображаются только те объекты доступа, на которые у него есть право ydb.granular.describe_schema.

Структура таблицы:

Колонка Описание
Path Путь к объекту доступа.
Тип: Utf8.
Ключ: 0.
Sid SID субъекта доступа.
Тип: Utf8.
Ключ: 1.
Permission Название права доступа YDB.
Тип: Utf8.
Ключ: 2.

Примеры запросов

Получение явно предоставленных прав на объект доступа - таблицу my_table:

SELECT *
FROM `.sys/auth_permissions`
WHERE Path = "my_table"

Получение эффективных прав на объект доступа - таблицу my_table:

SELECT *
FROM `.sys/auth_effective_permissions`
WHERE Path = "my_table"

Получение прав, предоставленных пользователю user3:

SELECT *
FROM `.sys/auth_permissions`
WHERE Sid = "user3"

Информация о владельцах объектов доступа

Представление auth_owners отображает информацию о владельцах объектов доступа.

Пользователю в данном представлении отображаются только те объекты доступа, на которые ему предоставлено право ydb.granular.describe_schema.

Структура таблицы:

Колонка Описание
Path Путь к объекту доступа.
Тип: Utf8.
Ключ: 0.
Sid SID владельца объекта доступа.
Тип: Utf8.

Потоковые запросы

Просмотр информации о потоковых запросах

Системное представление streaming_queries содержит информацию о всех созданных потоковых запросах.

Пользователю в данном представлении отображаются только те потоковые запросы, на которые ему предоставлено право ydb.granular.describe_schema.

Структура таблицы:

Колонка Описание
Path Полный путь к запросу.
Тип: Utf8.
Ключ: 0.
Status Статус выполнения запроса, значение одно из:
CREATING - запрос создается
CREATED - запрос создан, но не запущен
STARTING - запрос запускается
RUNNING - запрос запущен
STOPPING - запрос останавливается
STOPPED - запрос остановлен
SUSPENDED - запрос завершился с ошибкой и ожидает backoff для ретрая
Тип: Utf8
Issues Ошибки выполнения запроса в формате JSON
Тип: Utf8
Plan План запроса в формате JSON
Тип: Utf8
Ast AST запроса
Тип: Utf8
Text Текст запроса
Тип: Utf8
Run Запущен ли запрос пользователем в данный момент
Тип: Bool
ResourcePool Имя пула ресурсов, к которому был привязан запрос (см. пример)
Тип: Utf8
RetryCount Число перезапусков запроса
Тип: Uint64
LastFailAt Время последней ошибки исполнения запроса
Тип: Timestamp
SuspendedUntil Время, когда будет предпринята попытка возобновить остановившийся запрос
Тип: Timestamp
Предыдущая
Следующая