1.数据库垂直拆分
1.1)什么是垂直拆分
垂直拆分是指按照业务将表进行分类,分布到不同的数据库上面,这样也就将数据或者说压力分担到不同的库上面。
1.2)拆分的优缺点
优点:拆分后业务更清晰,数据和代码维护更简单。
缺点:表无法join,只能通过接口,事务处理复杂。
2.数据库水平拆分
2.1)什么是水平拆分
水平拆分不是将表做分类,而是按照某个字段的某种规则将同一个表的数据分散到多个库中,每个表包含一部分数据。
2.2)分片规则
- 按照用户ID求模,将数据分散到不同的数据库。
- 按照日期,将不同月甚至日的数据分散到不同的库中。
- 按照某个特定的字段求模,或者根据特定范围段分散到不同的库中。
2.3)拆分优缺点
优点:不存在单表大数据,性能瓶颈,提高了系统稳定性和负载能力。
缺点:分片规则不好把握,多次扩展难度较大。
3.mycat工作原理
mycat会拦截用户发送过来的SQL语句, 首先对SQL语句做了一些特定的分析: 如分片分析、路由分析、读写分离分析、缓存分析,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。