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

Просмотр оценок compaction для tablet

Описание​

Этот API только для чтения позволяет найти tablet с высокими оценками compaction на одном узле BE. Оценка tablet равна сумме оценок входящих в него rowset. Результаты сортируются по compaction_score в порядке убывания. В режиме с разделением хранения и вычислений API проверяет работающие tablet, которые в данный момент кешируются на этом BE, а не все tablet в кластере.

Предварительные требования​

Подключайтесь напрямую к HTTP-порту BE (по умолчанию 8040). Если включён параметр конфигурации BE enable_all_http_auth, используйте учётную запись Doris с глобальной привилегией ADMIN. Замените учётные данные в примерах данными этой учётной записи.

Запрос​

GET /api/compaction_score?top_n=<integer>&sync_meta=<boolean>

У запроса нет тела.

Параметры запроса​

ПараметрТипОбязательныйЗначение по умолчаниюОписание
top_nНеотрицательное целое числоНетВсе доступные tabletВозвращает не более N tablet с наибольшими оценками. При значении 0 возвращается []. Значение должно помещаться в 64-битное целое число со знаком.
sync_metaЛогическое значение: true или falseНетfalseТолько для режима с разделением хранения и вычислений. При значении true перед расчётом оценок синхронизирует метаданные и rowset кешируемых на BE работающих tablet с Meta Service. В режиме с совмещёнными хранением и вычислениями полностью исключите этот параметр из запроса, в том числе sync_meta=false.

Базовое использование​

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

curl -u '<user>:<password>' 'http://127.0.0.1:8040/api/compaction_score?top_n=0'
[]

Ответ​

При успешном выполнении запроса возвращаются HTTP 200 и массив JSON. Каждый элемент содержит два поля со строковыми значениями:

ПолеОписание
tablet_idИдентификатор tablet.
compaction_scoreСумма оценок compaction для rowset, входящих в tablet.

Например, чтобы получить до 10 tablet:

curl -u '<user>:<password>' 'http://127.0.0.1:8040/api/compaction_score?top_n=10'

Следующий вывод приведён для иллюстрации; идентификаторы, оценки и количество возвращаемых tablet зависят от BE:

[
{"compaction_score": "5", "tablet_id": "42595"},
{"compaction_score": "4", "tablet_id": "10034"}
]

В режиме с разделением хранения и вычислений можно запросить актуальные метаданные кешируемых tablet перед расчётом оценок:

curl -u '<user>:<password>' 'http://127.0.0.1:8040/api/compaction_score?top_n=10&sync_meta=true'

Ответ имеет тот же формат JSON и содержит оценки, рассчитанные после синхронизации.

Обработка ошибок и особенности​

  • Если значение top_n не удаётся разобрать или оно отрицательное, возвращается HTTP 400, например invalid argument: top_n=wrong.
  • Непустое значение sync_meta в режиме с совмещёнными хранением и вычислениями приводит к возврату HTTP 400: param `sync_meta` is only available for cloud mode.
  • В режиме с разделением хранения и вычислений непустое значение sync_meta, отличное от true или false, приводит к возврату HTTP 400, например invalid argument: sync_meta=wrong.
  • При сбое синхронизации метаданных возвращается HTTP 500. Если включена аутентификация, отсутствие учётных данных или неверные учётные данные могут привести к возврату HTTP 401 или 403.
  • top_n ограничивает размер ответа, но не количество проверяемых или синхронизируемых tablet. Оценка отражает наблюдаемое состояние tablet на этом BE, а не атомарный снимок всего кластера.

Рекомендации​

Начните с небольшого значения top_n и значения по умолчанию sync_meta=false, чтобы определить tablet для дальнейшего изучения. Используйте sync_meta=true, когда нужны актуальные метаданные: этот параметр запускает синхронизацию всех кешируемых работающих tablet до применения top_n и может увеличить задержку и нагрузку на Meta Service.