MySQL:互联网公司常用分库分表方案汇总!
- 一、数据库瓶颈
- 1、IO瓶颈
- 2、CPU瓶颈
- 二、分库分表
- 1、水平分库
- 2、水平分表
- 3、垂直分库
- 4、垂直分表
- 三、分库分表工具
- 四、分库分表步骤
- 五、分库分表问题
- 1、非partition key的查询问题
- 2、非partition key跨库跨表分页查询问题
- 3、扩容问题
- 六、分库分表总结
- 七、分库分表示例
不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。
分库和垂直分表。第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 -> 分库。
水平分表。 ↑ ↑- sharding-sphere:jar,前身是sharding-jdbc;
-
TDDL:jar,Taobao Distribute Data Layer;
- Mycat:中间件。
注:工具的利弊,请自行调研,官网和社区优先。
↑根据容量(当前容量和增长量)评估分库或分表个数 -> 选key(均匀)-> 分表规则(hash或range等)-> 执行(一般双写)-> 扩容问题(尽量减少数据的移动)。
↑ NoSQL法解决(ES等)。 ↑- 分库分表,首先得知道瓶颈在哪里,然后才能合理地拆分(分库还是分表?水平还是垂直?分几个?)。且不可为了分库分表而拆分。
- 选key很重要,既要考虑到拆分均匀,也要考虑到非partition key的查询。
- 只要能满足需求,拆分规则越简单越好。
示例GitHub地址:https://github.com/littlecharacter4s/study-sharding
来源:https://www.cnblogs.com/littlecharacter/p/9342129.html