ck的表分片规则_第1页
ck的表分片规则_第2页
ck的表分片规则_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ck的表分片规则一、核心分片规则分类(按策略)ClickHouse的分片规则本质是“分片键计算结果映射到分片节点”,主流规则分以下4类,覆盖99%的业务场景:1.哈希分片(最常用)规则逻辑:对分片键做哈希运算(CRC32/MD5),取模分片数量,映射到对应节点。适用场景:用户ID、订单ID、设备ID等唯一标识类字段,追求数据均匀分布。核心配置示例:sql--创建分布式表时指定哈希分片CREATETABLEdist_orderONCLUSTERck_cluster(order_idUInt64,user_idUInt32,amountDecimal(10,2))ENGINE=Distributed(ck_cluster,default,order_local,intHash64(order_id));--分片键:order_id,哈希函数:intHash64(ClickHouse内置高效哈希)关键特点:数据均匀分布,避免单分片热点;分片键查询时能精准路由(如whereorder_id=123仅查对应分片);不支持范围查询的精准路由(如order_idbetween100and200会查所有分片)。2.范围分片(按区间)规则逻辑:按分片键的数值范围划分分片,如[0,10000)到分片1,[10000,20000)到分片2。适用场景:时间戳、自增ID、地区编码等有连续范围特征的字段,适合按范围查询。核心配置示例(需结合自定义分片函数):sql--自定义分片函数:按create_time(Unix时间戳)按月分片CREATEFUNCTIONshard_by_create_timeAS(create_time)->toInt32(toYYYYMM(toDateTime(create_time)))%8;--8个分片--创建分布式表CREATETABLEdist_logONCLUSTERck_cluster(log_idUInt64,create_timeUInt32,contentString)ENGINE=Distributed(ck_cluster,default,log_local,shard_by_create_time(create_time));关键特点:范围查询(如create_timebetween1704067200and1706745600)仅查对应分片;需提前规划范围,避免数据倾斜(如某月份数据量远大于其他月份)。3.随机分片(轮询)规则逻辑:不依赖分片键,数据随机/轮询分配到各分片。适用场景:无明显分片键、数据写入频率高且无需精准路由的场景(如日志临时表)。核心配置示例:sqlCREATETABLEdist_temp_logONCLUSTERck_cluster(idUInt64,contentString)ENGINE=Distributed(ck_cluster,default,temp_log_local,rand());--rand()随机分片关键特点:数据天然均匀,但查询时需扫描所有分片;性能最差(无路由优化),仅适合临时/低查询量表。4.自定义分片(按业务规则)规则逻辑:根据业务自定义函数映射分片,如按地区编码映射到对应机房分片。适用场景:多地域部署、多租户隔离等个性化需求。核心配置示例:sql--自定义分片函数:按省份编码映射分片CREATEFUNCTIONshard_by_provinceAS(province_code)->CASEprovince_codeWHEN'11'THEN0--北京→分片0WHEN'31'THEN1--上海→分片1WHEN'44'THEN2--广东→分片2ELSE3--其他→分片3END;--创建分布式表CREATETABLEdist_userONCLUSTERck_cluster(user_idUInt64,province_codeString,nameString)ENGINE=Distributed(ck_cluster,default,user_local,shard_by_province(province_code));关键特点:高度适配业务,但需保证函数逻辑稳定(避免分片映射规则变更)。二、分片规则设计核心原则均匀性优先:无论哪种规则,首要保证数据在各分片均匀分布,避免单分片数据量/查询压力过大;查询适配:分片键需与高频查询条件一致(如高频查user_id则用user_id哈希分片);不可变原则:分片键字段不能更新(如订单ID哈希分片后,订单ID不能修改),否则数据分片映射失效;分片数量固定:集群分片数量确定后尽量不调整,否则需重新分片(成本极高)。三、分片规则生效逻辑写入数据提取分片键值执行分片函数/哈希运算计算分片索引(0~N-1)映射到对应分片节点写入该节点的本地表写入数据提取分片键值执行分片函数/哈希运算计算分片索引(0~N-1)映射到对应分片节点写入该节点的本地表四、常见误区用非唯一字段(如状态字段)做哈希分片:易导致数据倾斜(如“已支付”状态占90%数据);分片键过多:仅需1个核心分片键,多字段会增加计算成本且无法精准路由;范围分片边界不合理:如按天分片但某天数据量突增,导致单分片过载

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论