一、概念
1.什么是分库分表?
其实就是字面意思,很好理解:
- 分库:从单个数据库拆分成多个数据库的过程,将数据散落在多个数据库中。
- 分表:从单张表拆分成多张表的过程,将数据散落在多张表内。
2.为什么要分库分表?
关键字:提升性能、增加可用性。
3.分库分表拆分方式
-
垂直切分:指的是将一个包含了很多表的数据库,根据表的功能的不同,分为多个小的数据库,个库中包含部分表。比如:电商系统采用的库为db_shop,根据用户功能和产品功能,可以拆分为用户库db_user和产品库db_product。
-
水平切分:垂直切分解决不了大表的瓶颈,如果同一个功能中表的数据量过大,就要对该表进行切分,为水平切分。
4.分库分表方案可以分为下面3种:
切分方案 | 解决的问题 |
---|---|
只分库不分表 | 数据库/写QPS过高,数据库连接数不足 |
只分表不分库 | 单表数据量过大,存储性能遇到瓶颈 |
既分库又分表 | 连接数不足 |