经过这几天的实践学习,对分库分表也有了一些认知,避免遗忘在这里记录一下。
垂直分库分表与水平分库分表
- 前者多是将耦合度低的业务分离达到专库专表
- 将多个业务的数据分库存放,从而提高系统的吞吐量
- 当然也不是说耦合度高的业务就不可以分,只不过代价稍大,其中一种解决方案就是配置公共表,将业务耦合部分提取出来
- 但是这仅仅是将业务的分离度提高,大表的问题还没有解决
- 后者是库的复制或者说是库的分离
- 通过某种策略(比如 id为奇数放入表user_1偶数放入表user_2中 库类似)将单个业务大小分割以减少单个库或表的数据量
- 水平分库分表可以有效提高单个服务器的性能
读写分离与主从同步
其实二者关系密不可分,当你采用读写分离架构时必定要实现主从同步
- 读写分离
- 将业务中的查询与增、改、删分离,一般来说查询速度会较快
- 写操作在主服务器实现,读操作在从服务器,实现一主一从、一主多从、多主多从
- 主从同步
- 这个很好理解,该技术就是为了解决读写分离所带来的数据不匹配的问题
- 值得一提的是主从同步是mysql所提供的配置项
解决方案
中间件:sharding-porxy,mycat
框架:sharding-jdbc