关于SQL优化
一、分布式查询优化—减少TargetDomain
查询涉及的Domain:
不指定查询条件:所有Domain都执行后汇总;
指定Domain作为条件:直接在指定的Domain上执行后返回结果;
指定sharding key作为条件:根据sharding key的值判断所在的Domain范围,只在必要的Domain执行后汇总;
指定标识Domain信息的伪列条件:根据伪列条件也可以找到对应的Domain上执行。
二、分布式查询优化—分散运算
以聚合运算为例:
当聚合运算中的group key为sharding key或者包含sharding key时,在每个集群组上执行聚合运算,
直接汇总结果即可。
当聚合运算中的group key不是或不包含sharding key时,无法在每个集群群组上执行having运算,因
此需要汇总后再进行having运算。
排序也是一样,排序的order by key如果存在不确定性时,将无法分散运算后再汇总,只能查询到结果
集后在local节点上进行全部结果集的排序。
三、分布式SQL优化—设计表时的优化:
设计原则:
大表尽量用分片策略。
小表如果查询多,并且经常与其他表有关联操作,用cloned策略。
小表如果DML多,可以放到一个Group上存储,减少提交时的等待以及网络IO。
有关联运算的表尽量用选sharding key做关联列,要求两表的sharding key一样。
只运行批量任务的表,同时批量任务中对分片键的操作是有顺序的,用range分片策略性能会很好
(谨慎使用,容易数据倾斜)
登录后发表回复
技术专家
文章
9阅读量
53获赞
7码筑匠心 2024-07-30
码筑匠心 2024-07-30
码筑匠心 2024-07-29
码筑匠心 2024-07-29
码筑匠心 2024-07-29