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

Привет, внезапно у одной из таблиц стали сыпаться ошибки: DB::Exception: Too

many partitions for single INSERT block (more than 100). The limit is controlled by 'max_partitions_per_insert_block' setting.

но только в одной из шард (из 4х). Там у нее две реплики.
Куда смотреть?

25 ответов

43 просмотра

partition by делит на слишком мелкие куски

Nik S.- Автор вопроса
Роман Морозов
partition by делит на слишком мелкие куски

а как так получается что только на одной шарде?

за одну вставку получается очень много частей записывать, может помочь вставка частями, по которым partition by

Nik S.
а как так получается что только на одной шарде?

шардирование по какому-то ключу, по этому ключу перекос данных возможен

Nik S.- Автор вопроса

то есть что конкретно происходит? я делаю insert, о смотрит что по моему ключу шардирвания ему нужно вставить в боле чем 100 патриций и он падает, так?

Nik S.
то есть что конкретно происходит? я делаю insert, ...

не по ключу шардирования, а по ключу из PARTITION BY ... SHARDING KEY используется для того чтобы данные в engine=Distributed распихать по целевым шардам при INSERT

Nik S.- Автор вопроса
Slach [altinity]
не по ключу шардирования, а по ключу из PARTITION...

ок, то если если у меня ключ partition by такой:PARTITION BY toYYYYMM(someDate) то получается я пытаюсь вставить слишком большой диапазон дат вдруг?

Nik S.
ок, то если если у меня ключ partition by такой:PA...

да, если у вас в одном INSERT будет больше 100 разных месяцев, то будет ошибка если вставка однократная, то через SETTINGS max_partition_per_insert_block=XXX можно попробовать разрулить если постоянно так вставляете, то надо смотреть структуру таблицы и запросы к ней... это вредно тем, что вы порождаете большое кол-во партов сразу, которые потом надо мержить...

Nik S.- Автор вопроса
Slach [altinity]
да, если у вас в одном INSERT будет больше 100 ра...

у нас вообще insert ... values там. То есть мы по идее для одной патриции всего делаем insert

Nik S.
у нас вообще insert ... values там. То есть мы по ...

и что? VALUES это просто формат входных данных...

Nik S.- Автор вопроса
Slach [altinity]
и что? VALUES это просто формат входных данных...

а, вы имеете в виду что там может быть большой одной строки

Nik S.- Автор вопроса

что интересно, что мы не вставляем больше чем 100 партов, это точно. таблица у нас ReplicatedReplacingMergeTree. Мы сделали один insert утром, до сих пор эти ошибки валятся (вижу в query_log), и у всех initial_query_id указывает на тот insert утром. Так же для этих insert вижу [replicate] в used_functions Возможно ли что репликация пытается вставить что-то более 100 партов и не может? У нас там 105 патриции в таблице в целом

Nik S.
что интересно, что мы не вставляем больше чем 100 ...

как вариант если вставляли в distributed то оно сложилось по .bin файликам и теперь пытается в фоне эти .bin файлы вставить как FORMAT Native в destination и получает отлуп... посмотрите по initial_query_id что там и куда вставлялось

Nik S.- Автор вопроса
Slach [altinity]
как вариант если вставляли в distributed то оно с...

там такой же insert into .. values.. только в distributed таблицу

Nik S.
там такой же insert into .. values.. только в dist...

SELECT * FROM system.distribution_queue FORMAT Vertical что показывает?

Nik S.- Автор вопроса
Nik S.- Автор вопроса
Slach [altinity]
SELECT * FROM system.distribution_queue FORMAT Ver...

для этой таблицы везде нули и никаких ошибок не вижу

Nik S.- Автор вопроса
Slach [altinity]
SELECT * FROM system.distribution_queue FORMAT Ver...

на двух репликах возвращает error_count = 16 и 17,data_files=1 и в last_exception возвращает: Code: 252. DB::Exception: Received from host4:9000. DB::Exception: Too many partitions for single INSERT block (more than 100). The limit is controlled by 'max_partitions_per_insert_block' setting. Large number of partitions is a common misconception. It will lead to severe negative performance impact, including slow server startup, slow INSERT queries and slow SELECT queries. Recommended total number of partitions for a table is under 1000..10000. Please note, that partitioning is not intended to speed up SELECT queries (ORDER BY key is sufficient to make range queries fast). Partitions are intended for data manipulation (DROP PARTITION, etc).. Stack trace: || | | | | | | 0. DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0xe1e20b5 in /usr/bin/clickhouse | | | | 1. ? @ 0x89ee7d0 in /usr/bin/clickhouse | | | | 2. DB::MergeTreeDataWriter::splitBlockIntoParts(DB::Block const&, unsigned long, std::shared_ptr<DB::StorageInMemoryMetadata const> const&, std::shared_ptr<DB::Context const>, std::shared_ptr<DB::ChunkOffsets>) @ 0x146fc763 in /usr/bin/clickhouse

Nik S.
на двух репликах возвращает error_count = 16 и 17,...

временно поменяйте echo '<clickhouse><profiles><default><max_partitions_per_insert_block>1000</max_partitions_per_insert_block></default></profiles></clickhouse>' > /etc/clickhouse-server/users.d/max_partitions_per_insert_block.xml как рассосется queue, удалите файл

Nik S.- Автор вопроса
Slach [altinity]
временно поменяйте echo '<clickhouse><profiles><d...

этот удалить, правильно? /var/lib/clickhouse/data/db/table/shard4_all_replicas/1.bin

Nik S.- Автор вопроса
Slach [altinity]
вы данные хотите потерять?

ну вы написали "как рассосется queue, удалите файл", понятно что после того как рассосётся

Nik S.
ну вы написали "как рассосется queue, удалите файл...

нет я имел ввиду удалить ранее созданный /etc/clickhouse-server/users.d/max_partitions_per_insert_block.xml

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Карта сайта