背景
随着业务不断的发展,系统的数据量越来越大,业务越来越复杂。此时,我们需要对数据库进行分库分表。分库分表又分为水平与垂直两种,分析如下:
垂直方向
- 主要针对业务
- 一个业务表有上百个字段,那么我们就得拆分成几个表。比如:人可以分为基础和扩展表
- 系统业务相当的复杂,这个是时候就得分库了,将业务简单化
- 我们在分库后还要对指定类型数据计算(比如:月)这个时候就需要分库分表了
水平方向
- 主要针对数据量
- 如果一张表得数据量太大上几千万,这个时候就得分表了,分表实现
- 如果一个库得读写压力太大,CPU占用高,就得读写分离了,分库实现
- 如果分库后数据量还是很大,那么我们就需要分库分表一起了
总结
- 分库:主要解决资源不足,IO性能瓶颈或者业务太过复杂,分离业务
- 分表:主要解决单表数据量太大操作性能问题或者一个业务字段太多,冷热分离
- 分库分表:可以解决上面得几个问题