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

SHOW TABLET

Описание​

SHOW TABLET позволяет просматривать сведения о tablet (доступно только администраторам) и имеет две формы:

  • SHOW TABLET <tablet_id>: по идентификатору tablet определяет базу данных, таблицу, партицию и индекс, к которым он относится.
  • SHOW TABLETS FROM <table_name>: выводит размещение реплик, версии, размер данных и состояние компактизации для всех tablet в таблице или в указанных партициях.

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

Примечание

Оба оператора поддерживают только таблицы во внутреннем 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>

Обязательный параметр. ID tablet, сведения о котором нужно получить.

SHOW TABLETS FROM​

1. <table_name>

Обязательный параметр. Имя таблицы. Поддерживается форма db_name.table_name.

2. PARTITIONS ( <partition_name> [, ... ] )

Необязательный параметр. Ограничивает результат указанными партициями. Если параметр не задан, просматриваются все партиции таблицы.

3. WHERE <where_condition>

Необязательный параметр. Условие фильтрации. Поддерживаются только сравнения на равенство по следующим трём полям, объединённые с помощью AND:

ПолеТипОписание
VersionIntegerФильтрует по версии реплики
BackendIdIntegerФильтрует по ID узла 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 собирает сведения обо всех tablet перед сортировкой, поэтому результат представляет собой глобально упорядоченный Top-N.

5. LIMIT [ <offset>, ] <row_count>

Необязательный параметр. Ограничивает число возвращаемых строк. Рекомендуется для таблиц с большим количеством tablet.

LIMIT и OFFSET применяются после сортировки. Если ORDER BY не указан, сканирование останавливается, как только собрано достаточно строк: при наличии LIMIT возвращаются первые строки в порядке сканирования; без LIMIT весь результат упорядочивается по (TabletId, ReplicaId).

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

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

SHOW TABLET​

СтолбецТип данныхПримечание
DbNameStringИмя базы данных, содержащей tablet.
TableNameStringИмя таблицы, содержащей tablet.
PartitionNameStringИмя партиции, содержащей tablet.
IndexNameStringИмя индекса, содержащего tablet.
DbIdIntID базы данных.
TableIdIntID таблицы.
PartitionIdIntID партиции.
IndexIdIntID индекса.
IsSyncBooleanСинхронизирован ли tablet со своими репликами.
OrderIntПорядковый номер tablet в индексе.
QueryHitsIntЧисло запросов к этому tablet.
WindowAccessCountIntЧисло обращений к этому tablet в пределах скользящего окна статистики.
LastAccessTimeIntВременная метка последнего обращения к этому tablet в миллисекундах. 0, если обращений не было.
DetailCmdStringКоманда для получения более подробных сведений о tablet.

SHOW TABLETS FROM​

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

СтолбецТип данныхПримечание
TabletIdIntID tablet
ReplicaIdIntID реплики
BackendIdIntID узла 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Число обращений к этому tablet в пределах скользящего окна статистики
LastAccessTimeIntВременная метка последнего обращения к этому tablet в миллисекундах. 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>
CooldownReplicaIdIntID реплики Cooldown. -1, если многоуровневое хранение не включено
CooldownMetaIdStringID метаданных Cooldown. Пустое значение, если многоуровневое хранение не включено
PrimaryBackendIdIntID основного узла BE для этого tablet. Возвращается только в режиме с разделением вычислений и хранения

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

Изменение поведения (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_privGlobalДля обоих операторов требуется глобальная привилегия ADMIN. В противном случае возникает ошибка Access denied.

Примеры​

Просмотр отдельного tablet по идентификатору​

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, позволяет подробнее просмотреть реплики этого tablet.

Вывод всех tablet таблицы​

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;

Поиск tablet с отставанием компактизации​

Сортировка по числу версий в порядке убывания позволяет выявить tablet с наибольшей нагрузкой на компактизацию:

SHOW TABLETS FROM example_db.sell_user ORDER BY VersionCount DESC LIMIT 10;

Столбец CompactionStatus в результате содержит HTTP-адрес; откройте его в браузере, чтобы просмотреть подробное состояние компактизации этой реплики.

Поиск неравномерного распределения данных​

Сортировка по размеру данных в порядке убывания позволяет быстро выявить tablet, которые заметно крупнее остальных:

-- 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;