当前位置:   article > 正文

MySql 分库分表问题_分库分表后的聚合查询

分库分表后的聚合查询

一、MySql为什么要分库分表

1、分库分表:主要是当前库的承载能力满足不了日益增加的业务需求,每天都会产生大量的数据,导致对数据操作出现瓶颈。

分库策略:常用的是根据业务需求进行分库:比如按照用户的维度对数据进行分库等

分表策略:一般常用的是按照日期的维度进行分表,尤其是在数据中台对ads表或者ods表进行处理的时候,大部分都是按照日期的维度分表

二、分库分表产生的问题

(1):ID生成问题,数据库被切割后,不能再依赖数据库自身的主键生成机制,可以考虑uuid或者使用分布式id算法,或者redis生产id

(2):查询问题:跨节点查询,比如包含join: 其实可以进行分开查询,不同的节点把数据查询出来,然后通过后台代码进行join

(3):聚合查询(group by,order by)问题:可以再各个节点上取得结果,然后再后端进行合并

(4):事务问题:可以使用分布式事务: 两阶段提交或者TCC


常用count(*) count(1) count(列名)区别

1、count(*) 包含所有的列 不忽略NULL值

2、count(1) 忽略所有的列 不忽略NULL值

3、count(列名) 会忽略列值为NULL

效率比较

列名为主键,count(列名)会比count(1)快, 反之,count(1) 比较快

如果有主键,则 select count(主键)的执行效率是最优的

如果表只有一个字段,则 select count(*)最优

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/407052
推荐阅读
相关标签
  

闽ICP备14008679号