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

Добрый день. Имеется схема вида : таблица с движком Null

и несколько мат.вью на таблицы с движком mergetree. Цель - оптимизация загрузки, а именно уменьшение кол-ва кусочков при инсерте.

Согласно : https://kb.altinity.com/altinity-kb-queries-and-syntax/atomic-insert/ , атомарной вставки не добиться , как минимум, из-за наличия матвью. А каким образом можно минимизировать кол-во кусков. На данный момент установил input_format_parallel_parsing=0 и min_insert_block_size_rows=2000000 и min_insert_block_size_bytes=2000000 ( 2000000 кол-во строк в файлах). Что можете ещё посоветовать ?

11 ответов

29 просмотров

Зачем уменьшать кол-во кусочков ?

главный совет - реже вставлять. Если есть возможно буферизовать где-то (кафка?), то вставляйте раз в 10с или даже раз в минуту. парты (кусочки) образуются при вставке, одна вставка - один парт.

Brаl Brаl Bral 🏳️‍🌈👠
Хочется iowait снизить

асинхронные инсерты можно попробовать если больше буферизовать негде. https://clickhouse.com/blog/click-house-v2111-released/#async-inserts

Brаl Brаl-Bral 🏳️‍🌈👠 Автор вопроса
Boris
главный совет - реже вставлять. Если есть возмож...

Не пойму, как это поможет, если вставка и так по 2кк идёт

Brаl Brаl Bral 🏳️‍🌈👠
Не пойму, как это поможет, если вставка и так по 2...

никак не поможет. Но тогда непонятен вопрос. Вас не устраивают парты по 2kk строк? (наверное меньше - там же в MV какая-то аггрегация?) У вас partition by - обычный (месячный) или какой-то хитрый?

Brаl Brаl-Bral 🏳️‍🌈👠 Автор вопроса
Boris
никак не поможет. Но тогда непонятен вопрос. Вас...

Так не получатся парты по 2кк строк, потому что загрузка не напрямую в mergetree,а через матвью. Партиционирование по месяцам , матвью перекладывают данные в таблицы с чуть другим первичным ключом , аггрегаций нет.

Brаl Brаl Bral 🏳️‍🌈👠
Так не получатся парты по 2кк строк, потому что за...

теперь вопрос понятен. min_insert_block_size_rows_for_materialized_views пробовали?

Brаl Brаl-Bral 🏳️‍🌈👠 Автор вопроса
Boris
теперь вопрос понятен. min_insert_block_size_rows...

Нет, буду пробовать. Спасибо !

кол-во партов равно количеству INSERT запросов это настройками не лечится, это надо на стороне приложения фигачить либо Engine=Buffer со сбросом в Engine=Null либо async_insert=1 в запросе передавать

bytes должно быть выше чем rows...

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

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

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