MAPREDUCE服务 MRS-ClickHouse数据库应用开发:规则

时间:2024-08-05 16:12:35

规则

  • 大批量少频次的插入。

    内容要求:ClickHouse的每次数据插入都会生成一到多个part文件,如果data part过多则会导致merge压力变大,甚至出现服务异常影响数据插入。建议一次插入10万行,每秒不超过1次插入。

  • 一次只插入一个分区内的数据。

    内容要求:如果数据属于不同的分区,则每次插入,不同分区的数据会独立生成part文件,导致part总数量膨胀。甚至写入报错“Merges are processing significantly slower than inserts”。一批次写入的数据,对应的分区数太多。ClickHouse建表之后insert batch时,会对不同的分区创建一个目录。如果一个batch里面的数据对应了过多的分区,那么一次insert就会生成较多的分区目录,后台merge线程处理速度跟不上分区增加的速度,社区规格是每秒不超过一个数据目录。

    具体的操作:确认一个batch的数据对应了多少个分区,insert的时候,尽量保证一个batch包含的分区数是1。

  • 慎用delete、update操作。

    内容要求:建议使用CollapsingMergeTree、VersionedCollapsingMergeTree引擎或根据分区批量清理。

  • ClickHouse需要写本地表。

    内容要求:连接balancer写入报错Request Entity Too Large。这是由于Nginx对http请求体大小有限制,而一次写入的数据量超过了这个限制。

    规避:修改Nginx配置项client_max_body_size为一个较大的值。

    解决:写本地表,不要通过balancer写入数据。

support.huaweicloud.com/bestpractice-mrs/mrs_05_0104.html