常见的大表优化

122 阅读1分钟

经过这几天的实践学习,对分库分表也有了一些认知,避免遗忘在这里记录一下。


垂直分库分表与水平分库分表

  • 前者多是将耦合度低的业务分离达到专库专表
    • 将多个业务的数据分库存放,从而提高系统的吞吐量
    • 当然也不是说耦合度高的业务就不可以分,只不过代价稍大,其中一种解决方案就是配置公共表,将业务耦合部分提取出来
    • 但是这仅仅是将业务的分离度提高,大表的问题还没有解决

image.png

  • 后者是库的复制或者说是库的分离
    • 通过某种策略(比如 id为奇数放入表user_1偶数放入表user_2中 库类似)将单个业务大小分割以减少单个库或表的数据量
    • 水平分库分表可以有效提高单个服务器的性能

image.png

读写分离与主从同步

其实二者关系密不可分,当你采用读写分离架构时必定要实现主从同步

  • 读写分离
    • 将业务中的查询与增、改、删分离,一般来说查询速度会较快
    • 写操作在主服务器实现,读操作在从服务器,实现一主一从、一主多从、多主多从
  • 主从同步
    • 这个很好理解,该技术就是为了解决读写分离所带来的数据不匹配的问题
    • 值得一提的是主从同步是mysql所提供的配置项

image.png

解决方案

中间件:sharding-porxy,mycat
框架:sharding-jdbc