登录 | 注册
首页
方案案例
技术社区
资源中心
培训体系
服务合作
关于我们
关于分布式SQL优化​
关于SQL优化​
码筑匠心
专栏:数据架构师笔记 2024-07-26 5 0
分享到:


关于SQL优化


一、分布式查询优化—减少TargetDomain


查询涉及的Domain:

不指定查询条件:所有Domain都执行后汇总;

指定Domain作为条件:直接在指定的Domain上执行后返回结果;

指定sharding key作为条件:根据sharding key的值判断所在的Domain范围,只在必要的Domain执行后汇总;

指定标识Domain信息的伪列条件:根据伪列条件也可以找到对应的Domain上执行。


image.png



二、分布式查询优化—分散运算


以聚合运算为例:

当聚合运算中的group key为sharding key或者包含sharding key时,在每个集群组上执行聚合运算,

直接汇总结果即可。

当聚合运算中的group key不是或不包含sharding key时,无法在每个集群群组上执行having运算,因

此需要汇总后再进行having运算。

排序也是一样,排序的order by key如果存在不确定性时,将无法分散运算后再汇总,只能查询到结果

集后在local节点上进行全部结果集的排序。


image.png


三、分布式SQL优化—设计表时的优化:


设计原则:

大表尽量用分片策略。

小表如果查询多,并且经常与其他表有关联操作,用cloned策略。

小表如果DML多,可以放到一个Group上存储,减少提交时的等待以及网络IO。

有关联运算的表尽量用选sharding key做关联列,要求两表的sharding key一样。

只运行批量任务的表,同时批量任务中对分片键的操作是有顺序的,用range分片策略性能会很好

(谨慎使用,容易数据倾斜)


0
评论

登录后发表回复

暂无评论
专栏作者
码筑匠心

技术专家

  • 文章

    9
  • 阅读量

    53
  • 获赞

    7
数据库适配过程中的经验分享
专栏其它文章更多 》

SUNDB

常见问题集锦

SUNDB

免费试用

回复