【数据库维护】如何解决Clickhouse数据库Too many parts报错

如何解决Clickhouse数据库Too many parts/memory exceed limit报错

问题现象

  • clickhouse数据库服务日志报错Too many parts.Merges are processing significantly slower than inserts exception.
  • clickhouse数据库服务报错memory exceed limit

问题原因分析

  1. 针对单张表单个分区频繁写入小数据量,数据库形成大量小碎片Parts,Clickhouse后台开始逐步进行小碎片合并为大碎片,消耗服务CPU/内存资源。
  2. 单张表单个分区活跃数据分片(Parts)数量大于服务配置参数parts_to_delay_insert值后,服务开始启动延迟插入,人为减慢新入库数据写入速度,进行自我保护,可能造成数据积压。
  3. 此时如果持续插入数据,单表单个分区活跃数据分片(Parts)数量大于服务配置参数parts_to_throw_insert参数,服务开始中断插入,报错Too many parts,造成数据丢失。
  4. clickhouse数据库为OLAP数据库,执行Alter/Update/Delete等操作会产生突变,对应表所有已入库数据在后台会自动重新入库,造成服务压力。

问题解决建议

  1. 优化查询/写入类操作

    1)单次写入同一分区数据 ,避免跨分区操作,资源消耗更大

    2)单次写入条数大于1W条 ,避免产生过多数据碎片,服务合并消耗资源

    3)避免变更表结构,以及更新/删除数据

  2. 优化clickhouse服务参数

    1)parts_to_delay_insert参数调整为1000,减缓延迟插入动作,避免数据积压

    2)parts_to_throw_insert参数调整为3000,减缓插入报错问题,避免数据丢失

    3)max_memory_usage参数调整,限制单次查询/插入内存使用上限

以上参数仅作参考,实际环境可以根据资源情况验证调整。

解决memory exceed limit问题同样可以参考上述配置调整。

相关推荐
Lancker7 分钟前
记一次 Druid 连接 MySQL 报 Communications link failure 的排查过程
数据库·mysql·adb
adinnet202636 分钟前
多轮对话与上下文压缩:追问时模型怎么记住前面说的
数据库·microsoft
JosieBook1 小时前
【数据库】MySQL 实战精通系列 · 第11篇:Redis 缓存与 MySQL 一致性实战
数据库·mysql·缓存
Leo.yuan2 小时前
2026企业级数据集成平台市场报告:国内外厂商格局与技术路线
数据库·oracle
guo_wen_qiang2 小时前
云服务器mysql分库分表环境搭建(2库4表)
数据库·mysql·docker
jianpeng的工程笔记2 小时前
EL8 / EL9 安装 Slurm 26.05.4:主备控制器、MariaDB 记账与作业验收
linux·数据库·mariadb·高性能计算·slurm
SelectDB技术团队2 小时前
ClickHouse 存日志的能力边界:并发、检索与 trace 回放的实测对照
数据结构·数据库·clickhouse·日志分析·apache doris·日志存储
倔强的小石头_3 小时前
Ubuntu部署Prometheus与Alertmanager:systemd配置、告警对接及cpolar远程访问
数据库·ubuntu·prometheus
茉莉玫瑰花茶3 小时前
GO [ 接口 ]
服务器·数据库·golang
babe小鑫3 小时前
金融工程专业秋招:金融类证书与数据分析类证书的搭配方案
大数据·数据库·人工智能