问题
执行 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
)
增加此值通常会影响表的查询性能,但对于数据迁移来说是可以的。