Перейти к содержимому
Последнее обновление

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)
  • До 4.1.4 ORDER BY мог сортировать только те строки, до которых сканирование дошло в первую очередь, поэтому результат не являлся истинным глобальным Top-N. Начиная с 4.1.4 сведения обо всех таблетах собираются перед сортировкой.
  • До 4.1.4 OFFSET, заданный отдельно (без положительного LIMIT), игнорировался, а OFFSET, превышающий общее число строк, очищал весь результат. Начиная с 4.1.4 OFFSET всегда применяется.

Возвращаемое значение​

SHOW TABLET​

СтолбецТип данныхПримечание
DbNameStringИмя базы данных, содержащей таблет.
TableNameStringИмя таблицы, содержащей таблет.
PartitionNameStringИмя раздела, содержащего таблет.
IndexNameStringИмя индекса, содержащего таблет.
DbIdIntИдентификатор базы данных.
TableIdIntИдентификатор таблицы.
PartitionIdIntИдентификатор раздела.
IndexIdIntИдентификатор индекса.
IsSyncBooleanСинхронизирован ли таблет со своими репликами.
OrderIntПорядковый номер таблета в его индексе.
QueryHitsIntЧисло запросов, обращавшихся к этому таблету.
WindowAccessCountIntЧисло обращений к этому таблету в пределах скользящего окна статистики.
LastAccessTimeIntМетка времени последнего обращения к этому таблету в миллисекундах. 0, если обращений не было.
DetailCmdStringКоманда для получения более подробных сведений о таблете.

SHOW TABLETS FROM​

Каждая строка соответствует одной реплике, поэтому один и тот же TabletId появляется по одному разу для каждой реплики.

СтолбецТип данныхПримечание
TabletIdIntИдентификатор таблета
ReplicaIdIntИдентификатор реплики
BackendIdIntИдентификатор узла BE, на котором размещена реплика
SchemaHashIntХеш схемы реплики
VersionIntТекущая видимая версия реплики
LstSuccessVersionIntПоследняя успешно загруженная версия
LstFailedVersionIntПоследняя версия с ошибкой. -1 означает отсутствие версий с ошибками
LstFailedTimeStringВремя последнего сбоя версии. \N, если сбоев не было
LocalDataSizeIntОбъём локальных данных реплики в байтах. В режиме с разделением вычислений и хранения обычно равен 0, см. раздел «Семантика объёма данных в режиме с разделением вычислений и хранения» ниже
RemoteDataSizeIntОбъём удалённых данных реплики в байтах
RowCountIntЧисло строк в реплике
StateStringСостояние реплики: NORMAL, ROLLUP, CLONE, DECOMMISSION
LstConsistencyCheckTimeStringВремя последней проверки согласованности. \N, если проверка никогда не выполнялась
CheckVersionIntВерсия последней проверки согласованности. -1 означает, что проверка никогда не выполнялась
VisibleVersionCountIntЧисло видимых версий реплики
VersionCountIntОбщее число версий реплики. Помогает определить, отстаёт ли компактация
QueryHitsIntЧисло запросов, обращавшихся к этой реплике
WindowAccessCountIntЧисло обращений к этому таблету в пределах скользящего окна статистики
LastAccessTimeIntМетка времени последнего обращения к этому таблету в миллисекундах. 0, если обращений не было
PathHashIntХеш каталога данных, в котором размещена реплика
PathStringКорневой каталог данных BE, в котором размещена реплика. Пусто, если определить каталог не удалось
MetaUrlStringHTTP-адрес для просмотра метаданных реплики в формате http://<be_host>:<be_http_port>/api/meta/header/<tablet_id>
CompactionStatusStringHTTP-адрес для просмотра состояния компактации реплики в формате http://<be_host>:<be_http_port>/api/compaction/show?tablet_id=<tablet_id>
CooldownReplicaIdIntИдентификатор реплики Cooldown. -1, если многоуровневое хранение не включено
CooldownMetaIdStringИдентификатор метаданных Cooldown. Пусто, если многоуровневое хранение не включено
PrimaryBackendIdIntИдентификатор основного узла BE для этого таблета. Возвращается только в режиме с разделением вычислений и хранения

Семантика объёма данных в режиме с разделением вычислений и хранения​

Изменение поведения (4.0.8)

Начиная с версии 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;