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

Всем привет! Помогите пожалуйста разобраться с мутациями и памятью. Есть

таблица:

engine = AggregatingMergeTree PARTITION BY month
ORDER BY (objectHash, month)

Прежде чем запускать мутацию сделал optimise final и дождался завершения (то есть количество партиций и партов стало равным).
Запустил мутацию, которая бежит по всей патриции без учета ключа, и она потребляет слишком много памяти (отвалились в это время остальные запросы по totalMemoryLimit, и на графиках после запуска видно было как растет потребление памяти). Хочу разбить эту мутацию на несколько. Для этого хочу изменить таблицу на

engine = AggregatingMergeTree PARTITION BY month
ORDER BY (objectHash%10, objectHash, month)

И запускать последовательно несколько мутаций с Where objectHash%10 = i. Но даст ли это результат? Кажется, что при выполнении мутацию, будет всё равно использована целиком вся партиция, и тогда не получу никакой пользы. Я правильно понимаю, что мне нужно также изменить ключ партиционирования чтобы это заработало?

3 ответов

20 просмотров

покажите что за мутация, сколько памяти, мутации не должны использовать много памяти.

Sergey-Lomdjaria Автор вопроса
Denny [Altinity]
покажите что за мутация, сколько памяти, мутации н...

Большое спасибо за комментарий. Нашел что там в мутации делается подзапрос который вычитывает всю партицию, и видимо из-за него всё отваливалось по памяти. Я правильно понимаю, что в целом мутация должна последовательно читать отдельные блоки, а не считывать всю партицию целиком, как я предположил до этого?

Sergey Lomdjaria
Большое спасибо за комментарий. Нашел что там в му...

да, мутация последовательно обрабатывает по 8 тыс. строк из парта, несколько партов могут процессится одновременно (это настраивается). Обычно мутации используют мало памяти. Если запустить подряд много мутаций они начинают объединятся в одну, с очень-очень длинным выражением, и парсер выражения начинает жрать память (я видел 50 тыс. мутаций объединились и там сотни мегабайт выражение было, падал сервер по ООМ со 100ГБ ОЗУ), в современных КХ это починили

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта