为什么要分库分表
随着表的数量的增加,增删改查的消耗也就越大,另外如果是单服务器部署,那么数据处理能力也是很有限的
- 从性能和可用性的角度,对数据库表进行拆分,把一个库的数据分块存储到多个库说,把一个表的数据分快,存放到多个表上,这就是分库分表
分库分表的具体实施策略
-
垂直切分
- 根据列进行拆分,根据数据中的相关性进行拆分,例如把用户信息中的一些信息进行拆分出一个表
- 可以让行数据变小,减少IO次数,简化表结果。
- 但是主键会出现冗余,会引起表连接的操作,加大事务的管理难度
-
水平切分
- 根据行进行分开,数据结构不变,根据业务进行切分,例如将用户表今年男女分别存储。
- 支持非常大的数据量存储,应用端改造较少
- 但是会增加逻辑,部署,运维的复杂度
分库分表之后,会有ID问题,需要使用一些手段让全局主键唯一。