Оптимизация запроса clickhouse / ускорение построения графика grafana

Я занимаюсь нагрузочным тестированием, для мониторинга сейчас используем ClickHouse + Grafana для хранения и визуализации метрик.

Возникла надобность собирать информацию по 90per времени ответа каждого роута из скрипта. например: api/1 - 2s, api/2 - 1s и формировать из них график.

Я написал соответствующий запрос по документации CLickHouse:

$columns(sample_label, quantile(0.9)(average_time) c) 
FROM jmresults_statistic
WHERE
    sample_label LIKE '%/%'
    AND profile_name = '$profile'
    and run_id = '$runid'

Который транслируется в:

SELECT t, groupArray((sample_label, c)) AS groupArr FROM ( SELECT (intDiv(toUInt32(timestamp_sec), 3600) * 3600) * 1000 AS t, sample_label, quantile(0.9)(average_time) c FROM jmresults_statistic
WHERE timestamp_sec >= toDateTime(1617635860) AND timestamp_sec <= toDateTime(1617639145) AND
    sample_label LIKE '%/%'
    AND profile_name = 'test4.5'
    and run_id = 'R001' GROUP BY t, sample_label ORDER BY t, sample_label) GROUP BY t ORDER BY t

Нужные данные собираются корректно. Проблема в том, что Grafana и сам браузер "зависает", когда пытается отрисовать получившийся график. Причем все работает нестабильно и на небольшом колчестве точек: если делать группировку точек за час (в этом случае их останется не более 100), все также обрабатывается крайне медленно.

Возможно ли как-то оптимизировать этот процесс? Возможно, есть какой-то путь оптимизировать запрос или ускорить вычисления у Grafana?

Буду крайне благодарен за помощь.


Ответы (0 шт):