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

Можете подсказать, после обновления кликхауса, простые запросы,.которые раньше отрабатывали, стали

выдвать переполнение памяти, в чем может быть проблема?
DB::Exception: Memory limit (for query) exceeded: would use 9.49 GiB

26 ответов

17 просмотров

For example, which queries?

L-dar- Автор вопроса
Yuran
For example, which queries?

SELECT DISTINCT id,user_id, FROM request WHERE event_type = 'bid' and id IN ('238862824074244635', '238856329183581358', '238847979799178464', '238845048900672098', '238842809361202089', '238809601308967527', '238775717847339988') AND cr_id IS NOT NULL AND created_ts > 1621582193;

L-dar
SELECT DISTINCT id,user_id, FROM request WHERE ev...

Есть подозрение, что просто поправили подсчет потребления памяти для таких запросов

L-dar- Автор вопроса
Yuran
Есть подозрение, что просто поправили подсчет потр...

а на какой параметр нужно обратить внимание?

L-dar
а на какой параметр нужно обратить внимание?

Вы делаете SELECT DISTINCT, поэтому без попадания в индекс (а Вы вроде не используете индекс) серверу нужно все важные колонки держать в памяти на протяжении всего запроса

L-dar- Автор вопроса
Yuran
Вы делаете SELECT DISTINCT, поэтому без попадания ...

у меня есть индекс, как раз во where эта колонка используется

L-dar- Автор вопроса
Yuran
Вы делаете SELECT DISTINCT, поэтому без попадания ...

и почему без попадания в индекс, как определили?

L-dar
у меня есть индекс, как раз во where эта колонка и...

Реалистично, только первая колонка может использоваться, потому что id последняя в составном индексе, маловероятно, чтобы ClickHouse её мог использовать для запроса. Но я не об этом. Я о том, что для эффективного удаления дублей в DISTINCT выбираемые колонки в DISTINCT тоже должны быть в индексе, причем подряд, например такой запрос в теории может не держать всё в памяти, с Вашей структурой таблицы: SELECT DISTINCT sp_id, c_id FROM tbl WHERE event_type = 'ololo'

L-dar- Автор вопроса
Yuran
Реалистично, только первая колонка может использов...

Без DITINCT тоже не работает.... Насчет индексов т.е. все колонки которые есть в индексе, они должны присутсвовать во WHERE. Но если колонка во WHERE не указана, которая стоит сама первая, то след колонки не будут учитываться в индексе запроса? Я правильно понимаю

L-dar- Автор вопроса
Yuran
Реалистично, только первая колонка может использов...

Где можно подробно насчет этого почитать?

L-dar
Без DITINCT тоже не работает.... Насчет индексов т...

Если без DISTINCT тоже выдаёт ошибку по памяти, то это уже интереснее :). Возможно, ClickHouse все-таки пытается использовать индекс, но кусок с фиксированным event_type не влезает целиком в память? Интересно посмотреть на план исполнения в логах сервера

L-dar- Автор вопроса
Yuran
Если без DISTINCT тоже выдаёт ошибку по памяти, то...

Еще одна важная тонкость, диапазон захватывает две партиции.

L-dar- Автор вопроса
L-dar
Насчет плана, это EXPLAIN?

Если EXPLAIN уже поддерживается в ClickHouse?

L-dar
Насчет плана, это EXPLAIN?

Вероятно тогда EXPLAIN PLAN

min_bytes_to_use_mmap_io = 0 https://github.com/ClickHouse/ClickHouse/issues/24505

Yuran
Если EXPLAIN уже поддерживается в ClickHouse?

https://clickhouse.tech/docs/en/sql-reference/statements/explain/

L-dar
Где можно подробно насчет этого почитать?

ClickHouse сортирует данные в порядке возрастания первичного ключа, поэтому, как и для обычного составного индекса в традиционных СУБД, гарантируется адекватная производительность только при поиске по точному совпадению префикса индекса, то есть col1 = 'A' AND col2 = 'B' и т.д. Любые другие запросы могут тоже работать, и в ClickHouse вроде как полно таких оптимизаций, то есть можно пропускать колонки, если кардинальность не слишком высокая, но расчитывать на это я бы не стал, особенно если характер данных может меняться.

L-dar- Автор вопроса
L-dar- Автор вопроса
Yuran
ClickHouse сортирует данные в порядке возрастания ...

Спасибо, уложилось у голове теперь

L-dar- Автор вопроса
Denny [Altinity]
min_bytes_to_use_mmap_io = 0 https://github.com/C...

Эту настройку можно просто в конфиге добавить, смотрю там нет такого параметра?

L-dar
Эту настройку можно просто в конфиге добавить, смо...

cat /etc/clickhouse-server/users.d/min_bytes_to_use_mmap_io.xml <?xml version="1.0"?> <yandex> <profiles> <default> <min_bytes_to_use_mmap_io>0</min_bytes_to_use_mmap_io> </default> </profiles> </yandex>

L-dar- Автор вопроса
L-dar
Этот файл нужно создать?

ну да. Вы вообще про параметры и конфиги доку почитайте. и вот тут https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-server-config-files

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
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
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта