Просмотр оценок 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.