跳至主要内容

INSERT...SELECT 期间的 TOO MANY PARTS 错误

·阅读时间:1分钟

问题

执行 INSERT...SELECT 语句时,出现部件过多 (TOO_MANY_PARTS) 错误。

如何解决此问题?

回答

以下是一些可以调整的设置以避免此错误,这是 ClickHouse 的专家级调整,并且这些值仅应在了解将使用这些值的 ClickHouse 云服务或本地集群的规格后才设置,因此不要将这些值视为“一刀切”。

max_insert_block_size = 100_000_000 (默认值 1_048_576)

从约 1M 增加到 100M 将允许形成更大的块

注意:此设置仅在服务器形成块时适用。即通过 HTTP 接口进行 INSERT,而不是用于 clickhouse-client

min_insert_block_size_rows = 100_000_000 (默认值 1_048_576)

从约 1M 增加到 100M 将允许形成更大的块。

min_insert_block_size_bytes = 500_000_000 (默认值 268_435_456)

从 268.44 MB 增加到 500 MB 将允许形成更大的块。

parts_to_delay_insert = 500 (默认值 150)

增加此值以防止在单个分区中达到活动部件数量时人为地降低 INSERT 速度。

parts_to_throw_insert = 1500 (默认值 300)

增加此值通常会影响表的查询性能,但对于数据迁移来说是可以的。