169 похожих чатов

А какие метрики берёте? Я брал за основу метрики базы: query_duration_ms

и memory_usage. Но по итогу оказалось, что duration может на одном и том же запросе меняться, а memory_usage вообще не годится ибо (цитата: "CH выделяет максимум памяти ..." на каждый job), хотя я проверял - данная метрика на одном и том же запросе не меняется.

14 ответов

19 просмотров

При игре в долгую используется теория СМО, методологии USE https://www.brendangregg.com/ и APDEX. Но это долгая тема из области APM (application performance monitoring). В первую очередь надо на запрос и структуру таблицы глядеть, 80% косяков уже там видны

Но я просто менеджер. Если технари в профильном чате не подсказали, то тут, наверное, случай непростой. Надо начинать именно с описания ситуации. Железо, таблица, запрос, на что жалобы

Антон, и не забывайте, что изучать тайминг правильно в консоли КХ, все остальные способы привносят сетевые задержки на передачу данных, которые в плохих случаях могут съедать до 99% времени.

Байкулов-Антон Автор вопроса
Ilya Shutov
Антон, и не забывайте, что изучать тайминг правиль...

Не забываю=) Я смотрю в системных таблицах базы.

Байкулов Антон
Не забываю=) Я смотрю в системных таблицах базы.

Можно просто запросы позапускать в консоли и поглядеть на динамику. А можно, все-таки, чуть поконкретнее про времена и запросы? Может @volodin_dd что подскажет тоже?

Ilya Shutov
Можно просто запросы позапускать в консоли и погля...

Я уже говорил. Надо для начала задать нормальные ключи сортировки и партиционирования. Заодно по максимуму избавиться от nullable типов и вообще посмотреть в сторону более примитивных. Потом надо размазывать на кластер. После этого я бы поигрался с индексами пропуска строк и разными алгоритмами сжатия, но это мне ни разу не помогло, предыдущих пунктов хватало за глаза. Ну и надо смотреть запросы. Особенно в сторону использования функций массивов вместо их разворачивания. И, конечно, движок AggregatingMergeTree. Это киллер фича.

Байкулов-Антон Автор вопроса
Дмитрий Володин
Я уже говорил. Надо для начала задать нормальные к...

От меня, лишь изредка заглядывающего в КХ, такой слог был бы не совсем убедителен :) Но нужно описание ситуации. Часто лечится просто путём просмотра кода :)

Ilya Shutov
От меня, лишь изредка заглядывающего в КХ, такой с...

Последний пункт прямо жирнющий плюс. Я первые несколько месяцев на текущей работе занимался в основном переписыванием легаси кода

Дмитрий Володин
Я уже говорил. Надо для начала задать нормальные к...

Отказ от nullable-типов на практике нецелесообразен для таблиц, которые уходят в другие языки под анализ. Это мб хорошо для выстраивания больших таблиц под rawdata Такое веселье, когда у тебя в строковом поле пустота = '', а в числовом 0. А если в столбце может быть 0 и пустота?) Когда код обрастает сложными деталями, такие штуки - постоянно в ногу стреляют. И так сложно, а здесь на базовом уровне путаница. И еще веселее, если первичная обработка пустот должна идти в громоздком sql-коде :)

Базовые метрики (RAM, ЦПУ, диск) обычно всё показывают информативно, хз. С метриками разве что можно экспериментировать в плане выбора периода (5-15 минут) под подсчет удельного потребления ресурсов (для ЦПУ/RAM). Обычного этого достаточно. Для всего остального есть планы запросов.

Дмитрий Володин
Я уже говорил. Надо для начала задать нормальные к...

Побуду капитаном очевидность. Есть такая штука EXPLAIN. Ставите перед запросом и запускаете. Далее смотрите план запроса и оптимизируете. Тем не менее, как сказал Илья - в конечном итоге встретите узкое место сети. (Вот буквально только что получал - запрос на сервере выполняется 420ms, а в qliksense тащит аж 2m 20 s. И это никак не преодолимо, имхо).

Владислав Lazycat
Побуду капитаном очевидность. Есть такая штука EXP...

Да, надстройки в виде jdbc/http отжирают время. Ну и explain да, конечно.

Владислав Lazycat
Побуду капитаном очевидность. Есть такая штука EXP...

Там изначально два вопроса в одном было. 1. Отладка 2. Мониторинг постоянный. Если я правильно понял.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта