SHOW TABLET
Описание
SHOW TABLET позволяет просматривать сведения о таблетах (доступно только администраторам) и имеет две формы:
SHOW TABLET <tablet_id>: по идентификатору таблета определяет базу данных, таблицу, раздел и индекс, к которым он принадлежит.SHOW TABLETS FROM <table_name>: выводит размещение реплик, версии, объём данных и состояние компактации для каждого таблета таблицы или указанных разделов.
Эти две формы часто используют вместе: сначала находят таблет с помощью первой формы, затем проверяют остальные реплики в том же разделе с помощью второй.
Оба оператора поддерживают только таблицы во внутреннем Catalog. Внешние Catalog не поддерживаются.
Синтаксис
-- Inspect a single tablet by its id
SHOW TABLET <tablet_id>
-- List every tablet of a table
SHOW TABLETS FROM <table_name>
[ PARTITIONS ( <partition_name> [, ... ] ) ]
[ WHERE <where_condition> ]
[ ORDER BY <column_name> [ ASC | DESC ] [, ... ] ]
[ LIMIT [ <offset>, ] <row_count> ]
Параметры
SHOW TABLET
1. <tablet_id>
Обязательный параметр. Идентификатор таблета, сведения о котором нужно получить.
SHOW TABLETS FROM
1. <table_name>
Обязательный параметр. Имя таблицы. Поддерживается форма
db_name.table_name.
2. PARTITIONS ( <partition_name> [, ... ] )
Необязательный параметр. Ограничивает результат указанными разделами. Если параметр не задан, проверяются все разделы таблицы.
3. WHERE <where_condition>
Необязательный параметр. Условие фильтрации. Поддерживаются только сравнения на равенство по следующим трём полям, объединённые с помощью
AND:
Поле Тип Описание VersionInteger Фильтрация по версии реплики BackendIdInteger Фильтрация по идентификатору узла BE, на котором размещена реплика StateString Фильтрация по состоянию реплики: NORMAL,ROLLUP,CLONE,DECOMMISSIONДругие поля, сравнения, отличные от равенства, и
ORвызывают ошибку:Where clause should looks like: Version = "version", or state = "NORMAL|ROLLUP|CLONE|DECOMMISSION", or BackendId = 10000 or compound predicate with operator AND
4. ORDER BY <column_name>
Необязательный параметр. Сортирует результат по столбцу. Столбец сортировки должен входить в список столбцов в разделе «Возвращаемое значение» ниже.
Если указан
ORDER BY, Doris собирает сведения обо всех таблетах перед сортировкой, поэтому результат представляет собой глобально упорядоченный Top-N.
5. LIMIT [ <offset>, ] <row_count>
Необязательный параметр. Ограничивает число возвращаемых строк. Рекомендуется использовать, если в таблице много таблетов.
LIMITиOFFSETприменяются после сортировки. БезORDER BYсканирование прекращается, как только собрано достаточно строк, а результат представляет собой начальную часть последовательности, упорядоченной по(TabletId, ReplicaId).
- До 4.1.4
ORDER BYмог сортировать только те строки, до которых сканирование дошло в первую очередь, поэтому результат не являлся истинным глобальным Top-N. Начиная с 4.1.4 сведения обо всех таблетах собираются перед сортировкой. - До 4.1.4
OFFSET, заданный отдельно (без положительногоLIMIT), игнорировался, аOFFSET, превышающий общее число строк, очищал весь результат. Начиная с 4.1.4OFFSETвсегда применяется.
Возвращаемое значение
SHOW TABLET
| Столбец | Тип данных | Примечание |
|---|---|---|
| DbName | String | Имя базы данных, содержащей таблет. |
| TableName | String | Имя таблицы, содержащей таблет. |
| PartitionName | String | Имя раздела, содержащего таблет. |
| IndexName | String | Имя индекса, содержащего таблет. |
| DbId | Int | Идентификатор базы данных. |
| TableId | Int | Идентификатор таблицы. |
| PartitionId | Int | Идентификатор раздела. |
| IndexId | Int | Идентификатор индекса. |
| IsSync | Boolean | Синхронизирован ли таблет со своими репликами. |
| Order | Int | Порядковый номер таблета в его индексе. |
| QueryHits | Int | Число запросов, обращавшихся к этому таблету. |
| WindowAccessCount | Int | Число обращений к этому таблету в пределах скользящего окна статистики. |
| LastAccessTime | Int | Метка времени последнего обращения к этому таблету в миллисекундах. 0, если обращений не было. |
| DetailCmd | String | Команда для получения более подробных сведений о таблете. |
SHOW TABLETS FROM
Каждая строка соответствует одной реплике, поэтому один и тот же TabletId появляется по одному разу для каждой реплики.
| Столбец | Тип данных | Примечание |
|---|---|---|
| TabletId | Int | Идентификатор таблета |
| ReplicaId | Int | Идентификатор реплики |
| BackendId | Int | Идентификатор узла BE, на котором размещена реплика |
| SchemaHash | Int | Хеш схемы реплики |
| Version | Int | Текущая видимая версия реплики |
| LstSuccessVersion | Int | Последняя успешно загруженная версия |
| LstFailedVersion | Int | Последняя версия с ошибкой. -1 означает отсутствие версий с ошибками |
| LstFailedTime | String | Время последнего сбоя версии. \N, если сбоев не было |
| LocalDataSize | Int | Объём локальных данных реплики в байтах. В режиме с разделением вычислений и хранения обычно равен 0, см. раздел «Семантика объёма данных в режиме с разделением вычислений и хранения» ниже |
| RemoteDataSize | Int | Объём удалённых данных реплики в байтах |
| RowCount | Int | Число строк в реплике |
| State | String | Состояние реплики: NORMAL, ROLLUP, CLONE, DECOMMISSION |
| LstConsistencyCheckTime | String | Время последней проверки согласованности. \N, если проверка никогда не выполнялась |
| CheckVersion | Int | Версия последней проверки согласованности. -1 означает, что проверка никогда не выполнялась |
| VisibleVersionCount | Int | Число видимых версий реплики |
| VersionCount | Int | Общее число версий реплики. Помогает определить, отстаёт ли компактация |
| QueryHits | Int | Число запросов, обращавшихся к этой реплике |
| WindowAccessCount | Int | Число обращений к этому таблету в пределах скользящего окна статистики |
| LastAccessTime | Int | Метка времени последнего обращения к этому таблету в миллисекундах. 0, если обращений не было |
| PathHash | Int | Хеш каталога данных, в котором размещена реплика |
| Path | String | Корневой каталог данных BE, в котором размещена реплика. Пусто, если определить каталог не удалось |
| MetaUrl | String | HTTP-адрес для просмотра метаданных реплики в формате http://<be_host>:<be_http_port>/api/meta/header/<tablet_id> |
| CompactionStatus | String | HTTP-адрес для просмотра состояния компактации реплики в формате http://<be_host>:<be_http_port>/api/compaction/show?tablet_id=<tablet_id> |
| CooldownReplicaId | Int | Идентификатор реплики Cooldown. -1, если многоуровневое хранение не включено |
| CooldownMetaId | String | Идентификатор метаданных Cooldown. Пусто, если многоуровневое хранение не включено |
| PrimaryBackendId | Int | Идентификатор основного узла BE для этого таблета. Возвращается только в режиме с разделением вычислений и хранения |
Семантика объёма данных в режиме с разделением вычислений и хранения
Начиная с версии 4.0.8 объём данных реплик в режиме с разделением вычислений и хранения всегда отображается как объём удалённых данных: объём данных, который статистика реплики не учитывает как удалённый, включается в RemoteDataSize, а соответствующее значение LocalDataSize отображается как 0. Поэтому в кластере с разделением вычислений и хранения значение LocalDataSize обычно равно 0, а фактический объём данных указан в RemoteDataSize.
До 4.0.8 этот объём данных учитывался в LocalDataSize, из-за чего SHOW TABLETS, information_schema.partitions и information_schema.backend_tablets противоречили друг другу в том, какие данные считать локальными, а какие удалёнными. Изменение касается только отображения объёма данных; оно не влияет на место хранения или количество данных.
Требования к правам доступа
Пользователь, выполняющий эту команду SQL, должен иметь как минимум следующие права:
| Право | Объект | Примечания |
|---|---|---|
| Admin_priv | Глобальный | Оба оператора требуют глобального права ADMIN. В противном случае возникает ошибка Access denied. |
Примеры
Просмотр отдельного таблета по его идентификатору
SHOW TABLET 10145;
+--------+-----------+---------------+-----------+-------+---------+-------------+---------+--------+-------+-----------+-------------------+----------------+------------------------------------------------------------+
| DbName | TableName | PartitionName | IndexName | DbId | TableId | PartitionId | IndexId | IsSync | Order | QueryHits | WindowAccessCount | LastAccessTime | DetailCmd |
+--------+-----------+---------------+-----------+-------+---------+-------------+---------+--------+-------+-----------+-------------------+----------------+------------------------------------------------------------+
| test | sell_user | sell_user | sell_user | 10103 | 10143 | 10142 | 10144 | true | 0 | 0 | 0 | 0 | SHOW PROC '/dbs/10103/10143/partitions/10142/10144/10145'; |
+--------+-----------+---------------+-----------+-------+---------+-------------+---------+--------+-------+-----------+-------------------+----------------+------------------------------------------------------------+
Оператор SHOW PROC, указанный в столбце DetailCmd, позволяет получить более подробные сведения о репликах этого таблета.
Вывод всех таблетов таблицы
SHOW TABLETS FROM example_db.sell_user;
Ограничение результата указанными разделами
SHOW TABLETS FROM example_db.sell_user PARTITIONS(p202601, p202602);
Фильтрация по состоянию реплики и узлу её размещения
SHOW TABLETS FROM example_db.sell_user WHERE State = "NORMAL" AND BackendId = 10003;
Поиск таблетов с отстающей компактацией
Сортировка по числу версий в порядке убывания позволяет выявить таблеты с наибольшей нагрузкой на компактацию:
SHOW TABLETS FROM example_db.sell_user ORDER BY VersionCount DESC LIMIT 10;
Столбец CompactionStatus в результате содержит HTTP-адрес; откройте его в браузере, чтобы просмотреть подробное состояние компактации этой реплики.
Поиск неравномерного распределения данных
Сортировка по объёму данных в порядке убывания позволяет быстро выявить таблеты, которые заметно больше остальных:
-- Integrated storage-compute mode
SHOW TABLETS FROM example_db.sell_user ORDER BY LocalDataSize DESC LIMIT 10;
-- Compute-storage decoupled mode (data size is reported in RemoteDataSize)
SHOW TABLETS FROM example_db.sell_user ORDER BY RemoteDataSize DESC LIMIT 10;