Статистика выполнения запроса
Статистика выполнения показывает длительность этапов поиска, количество обработанных документов и показатели обращений к хранилищам. С ее помощью можно определить, какие команды и источники занимают больше времени.
Содержание
- Включение статистики
- Время и документы
- Сводка по хранилищам
- Показатели ClickHouse
- Статистика и лимиты
Включение статистики
При обращении к API поиска параметр calculateExecutionCost принимает значения ON и OFF. Значение по умолчанию — OFF. При ON сведения о выполнении возвращаются в service_data.
Примеры запросов приведены в API SME.
Время и документы
| Показатель | Значение |
|---|---|
took | Общее время обработки запроса в SME, в миллисекундах |
execution_cost[].duration_sec | Длительность этапа, в секундах |
execution_cost[].input_count | Количество входящих документов этапа |
execution_cost[].output_count | Количество исходящих документов этапа |
execution_cost[].processing_bytes | Учтенный объем обрабатываемых данных этапа, в байтах |
Этапы могут содержать вложенные этапы. Их время может входить во время родительского этапа.
processing_bytes рассчитывается при включенных лимитах. При выключенных лимитах значение отсутствует или равно null.
Отсутствующее значение или null означает, что показатель не рассчитан или недоступен.
Сводка по хранилищам
Блок storage_summary содержит общие сведения и список обращений, сгруппированных по хранилищам.
| Поле | Значение |
|---|---|
qsize | Сумма конечных эффективных размеров выборки по обращениям к хранилищам |
qsize_unbounded | Признак наличия хотя бы одного обращения без ограничения количества документов |
storage_duration_sec | Суммарная длительность обращений к хранилищам, в секундах |
storages[].type | Тип хранилища |
storages[].sources | Источники данных |
storages[].selected_count | Количество выбранных документов |
storages[].available_count | Сумма эффективных значений qsize в строке сводки; при безлимитном обращении — -1 |
storages[].storage_duration_seconds | Длительность обращений в строке сводки, в секундах |
Эффективный qsize учитывает примененные ограничения. available_count не показывает общее число подходящих документов в хранилище. Например, если найден миллион событий, а эффективный qsize=100, обращение добавит в available_count значение 100.
Общий qsize складывается только из конечных эффективных размеров обращений. Если все обращения безлимитные, он равен -1. При сочетании конечных и безлимитных обращений возвращается сумма конечных размеров, а qsize_unbounded равен true.
Длительности параллельных обращений складываются. Например, для трех обращений длительностью по 2 секунды суммарное время работы с хранилищами составит 6 секунд, хотя сам запрос может завершиться примерно за 2 секунды.
Для ClickHouse после получения серверных показателей время в сводке может уточняться.
Показатели ClickHouse
В фоновом поиске calculateExecutionCost=ON включает статистику этапов. Контекст обновления серверных показателей ClickHouse для фонового и гибридного режима не создается. Обновление показателей для таких результатов недоступно.
Информация собирается по всем доступным узлам ClickHouse. Показатели возвращаются в storage_resource_usage.
| Поле | Значение | Единица |
|---|---|---|
cpu_time_us | Процессорное время выполнения | Микросекунды |
peak_memory_bytes | Оценка пикового потребления памяти по собранным исполнениям | Байты |
data_info.read_rows | Количество прочитанных строк | Строки |
data_info.read_bytes | Объем прочитанных данных | Байты |
CPU отражает процессорное время. При параллельной работе оно может превышать фактически прошедшее время.
ClickHouse записывает журнал выполнения асинхронно. Поэтому показатели могут появиться позже результатов поиска. Для их получения используется обновление телеметрии.
Если записи еще не появились, повторите обновление позже. Поля message и error_code, если они присутствуют, поясняют состояние сбора. Показатели возвращаются для найденных записей о выполнениях. Записи о дочерних выполнениях могут появиться позже, а недоступные узлы могут быть пропущены.
Сбор может завершиться после получения записи исходного SQL-запроса, но до появления записей о дочерних выполнениях. После завершения контекста поздние записи нельзя гарантированно получить при обновлении.
Идентификатор обновления действует ограниченное время. Если он стал недоступен, для получения нового идентификатора нужно выполнить поиск заново.
Статистика и лимиты
Сбор статистики и применение лимитов включаются отдельно. Длительности и количество документов рассчитываются при включенной статистике независимо от включения лимитов. Для расчета processing_bytes дополнительно нужно включить лимиты.
Если лимит сократил выборку или временной диапазон, статистика описывает фактически выполненный поиск. При сравнении запросов учитывайте предупреждения об ограничениях.
Настройки описаны в разделе Лимиты поиска.