Оптимизация запроса 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?
Буду крайне благодарен за помощь.