mysql读写分离常见方式 数据库读写分离的原理( 二 )


4. 分表分表也分为 数据表垂直拆分 和 数据表水平拆分。
4.1 数据表垂直拆分数据表垂直拆分就是纵向地把表中的列分成多个表,把表从“宽”变“窄” 。一般遵循以下几个点进行拆分:

  • 冷热分离,把常用的列放在一个表,不常用的放在一个表 。
  • 大字段列独立存放
  • 关联关系的列紧密的放在一起
我们把用户表中常用的和不常用的而且大字段分离成两张表:
4.2 数据表的水平拆分表的水平拆分感觉跟库的水平拆分思想上都是一样的,只不过粒度不同 。表结构维持不变 。也就是说拆分后数据集的并集等于拆分前的数据集 。理解了 3.2 章节 之后这个就没有什么可说的了 。
5. 总结这里简单阐述了几个数据库优化概念,在实际操作中往往会组合使用 。我们在实际操作之前要做好数据量的预估,这样能够根据预测未来数据的增量来进行选型 。业务数据增长较小,常用于表的拆分 。增长特别大达到上万级别则可以选择分库,比如一些资金积分流水,历史记录之类的 。有些时候并不是拆分完就万事大吉了,比如我们按照地区拆分后,A 地区业务增长很快业绩很好,而 B 地区推广不力竞争激烈业绩萧条,造成了数据倾斜 。也会影响分库分表的期望效果 。这需要建立长效的监控预测机制来应对,甚至根据实际情况及时调整策略 。数据拆分还面临分布式的很多问题,分布式事务,高可用,数据一致性,全局唯一性都是应该考虑的问题 。希望我的讲解能够帮助你,还希望多多关注!

推荐阅读