【干货】分库分表最佳实践 - 有梦想的老王 - 博客园
- -MySQL单表(innoDB)可以存储10亿级数据,只是这时候性能比较差,业界公认MySQL单表容量在1KW以下是最佳状态,因为这时它的BTREE索引树高在3~5之间. 1.单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表;如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表.
MySQL单表(innoDB)可以存储10亿级数据,只是这时候性能比较差,业界公认MySQL单表容量在1KW以下是最佳状态,因为这时它的BTREE索引树高在3~5之间。
参考阿里开发手册建议:
1.单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表;如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。
2.实际情况受mysql机器配置等多方面影响,可能数据量很大但性能依旧不错,但考虑后续发展一定要进行分库分表考虑。
根据实际的业务场景选择合适的分片数据,参考如下:
根据实际的业务场景选择适当的分片字段,要达到如下要求:
分表数量和分表字段确定后,要设计一个合理的分表规则,良好的分表规则要达到如下条件:
如何保证分片数据均匀,参考:
如何保证方便后续分片扩容,参考:
如何高效的使用分库分表,核心是做到尽量的路由到最少的表,最好是只路由到一个表里面
核心规则如下:
阶段一
阶段二
阶段三