1、为何要分库分表?
常规在未进行分库分表的情况下,随着时间的推移,表中的数据量会越来越多,即表越来越大。
最终会导致:
- 一台服务器的资源不足
- 库中的表越来越多,表中的数据量越来越大
- 增删改查的开销越来越大
2、如何优化?
分库分表
3、垂直拆分、水平拆分
3.1、垂直拆分
垂直拆分数据库是指按照业务将表进行分类,部署到不同的数据库上面去,这样就能将数据(压力)分担到不同的数据库上面去。
例如:将商品、订单、用户的表分别拆到不同的库中,通过降低单库的大小来提高性能。但这种仍然存在大数据量带来的性能损耗。
垂直拆分表就是将一个大表根据业务功能拆分成多个子表。
例如:将用户表根据业务拆分成基本信息表和详细信息表。
缺点:
1、不解决大数据量带来的性能损耗,读写压力还是很大。
2、不同的业务无法跨库关联(join),只能通过业务来关联。
3.2、水平拆分
水平拆分是按照表中的某个或者多个字段按照一定的规则来分散到多个库或者表中,每个表中包含一部分数据。
例如:按照时间或者id进行拆分。比如根据用户id来拆分到不同的数据库(或者表),每个数据库和表结构一致。
3.3、垂直拆分对比水分拆分
垂直拆分 | 水平拆分 | |
特点 |
|
|
优点 |
|
|
缺点 |
|
|