为什么分库分表
- Mysql单表数据最多可达到10亿数据,业界公认Mysql单表容量在1千万以下是最佳状态,因为此时的BTREE索引树高度在3-5之间
- 单数据库实例的IO,CPU都有极限
什么是分库分表
1.把一个表的数据按规则分摊到多个表存储
主要难点问题
1.分布式事务问题
2.夸库join问题
3.排序,分页,聚合问题
4.多数据源管理
现有思路
1.客户端分片
应用层实现:在业务代码中判断使用的具体表
重写JDBC操作
定制ORM框架
2.代理端分片
在应用和数据库之间增加一个代理服务器
3.支持事务的分布式数据库分片
成熟的分布式数据库
现有开源框架
1.sharding-jdbc:客户端
2.MyCat:代理端