many partitions for single INSERT block (more than 100). The limit is controlled by 'max_partitions_per_insert_block' setting.
но только в одной из шард (из 4х). Там у нее две реплики.
Куда смотреть?
partition by делит на слишком мелкие куски
а как так получается что только на одной шарде?
за одну вставку получается очень много частей записывать, может помочь вставка частями, по которым partition by
шардирование по какому-то ключу, по этому ключу перекос данных возможен
то есть что конкретно происходит? я делаю insert, о смотрит что по моему ключу шардирвания ему нужно вставить в боле чем 100 патриций и он падает, так?
не по ключу шардирования, а по ключу из PARTITION BY ... SHARDING KEY используется для того чтобы данные в engine=Distributed распихать по целевым шардам при INSERT
ок, то если если у меня ключ partition by такой:PARTITION BY toYYYYMM(someDate) то получается я пытаюсь вставить слишком большой диапазон дат вдруг?
да, если у вас в одном INSERT будет больше 100 разных месяцев, то будет ошибка если вставка однократная, то через SETTINGS max_partition_per_insert_block=XXX можно попробовать разрулить если постоянно так вставляете, то надо смотреть структуру таблицы и запросы к ней... это вредно тем, что вы порождаете большое кол-во партов сразу, которые потом надо мержить...
у нас вообще insert ... values там. То есть мы по идее для одной патриции всего делаем insert
и что? VALUES это просто формат входных данных...
а, вы имеете в виду что там может быть большой одной строки
что интересно, что мы не вставляем больше чем 100 партов, это точно. таблица у нас ReplicatedReplacingMergeTree. Мы сделали один insert утром, до сих пор эти ошибки валятся (вижу в query_log), и у всех initial_query_id указывает на тот insert утром. Так же для этих insert вижу [replicate] в used_functions Возможно ли что репликация пытается вставить что-то более 100 партов и не может? У нас там 105 патриции в таблице в целом
как вариант если вставляли в distributed то оно сложилось по .bin файликам и теперь пытается в фоне эти .bin файлы вставить как FORMAT Native в destination и получает отлуп... посмотрите по initial_query_id что там и куда вставлялось
там такой же insert into .. values.. только в distributed таблицу
SELECT * FROM system.distribution_queue FORMAT Vertical что показывает?
какой у вас PARTITION BY в ReplicatedReplacingMergeTree ?
PARTITION BY toYYYYMM(committedDate)
для этой таблицы везде нули и никаких ошибок не вижу
на двух репликах возвращает 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
временно поменяйте 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, удалите файл
этот удалить, правильно? /var/lib/clickhouse/data/db/table/shard4_all_replicas/1.bin
вы данные хотите потерять?
ну вы написали "как рассосется queue, удалите файл", понятно что после того как рассосётся
нет я имел ввиду удалить ранее созданный /etc/clickhouse-server/users.d/max_partitions_per_insert_block.xml
Обсуждают сегодня