MYSQL 中的分库分表
一、垂直切分
1. 含义
强调的是业务的拆分,一个数据库由多个表构成,每个表对应不同的业务,那我们可以按照业务的不同将表进行分类,并放到不同的数据库上,做到专库专用。
2. 优点
拆分后业务清晰,系统之间整合或者拓展变得容易,数据库维护成本低。
3. 缺点
部分业务表无法关联,只能通过接口方式解决,提高了系统的复杂度,受每种业务的不同限制,存在单库瓶颈,涉及到分布式事务。
二、水平切分
1. 含义
将一个表中的数据分散到多个库中,在每个表中包含一部分数据,所有表加起来就是全部的数据,就是将表中的某些行数据分到一个数据库表中,其他行数据分到其他数据库表中。
2. 举例
全国地区表 按不同的地区拆分成多个库,高峰时100w 次请求 如果是单库就有100w次压力,拆到10个表中就10w 次请求压力,成倍的减少数据库访问次数。
3. 优点
不存在单库大数据,高并发问题,提高系统的稳定性和负载能力。
4. 缺点
分布式事务一致性难以解决,跨库join 性能较差。