MyCat

MyCat:数据库中间件

为什么用?
1、降低Java与数据库耦合度;
2、高访问量高并发造成数据库压力太大,减轻数据库压力;
3、读写请求数据不一致;

做了什么?
1、读写分离
MyCat_第1张图片
MySQL主从复制:
https://blog.csdn.net/xsh096011/article/details/105660305

2、数据分片
垂直拆分(分库);
水平拆分(分表);
垂直+水平拆分(分库分表)

MyCat_第2张图片

3、多数据源整合
MyCat_第3张图片

原理:
拦截:拦截用户发送过来的SQL语句

拦截用户发送SQL语句,对SQL语句做特定分析:分片分析、路由分析等,将SQL发送给后端真实数据库,返回的结果处理后返回给用户;

MyCat_第4张图片

启动和登录
https://blog.csdn.net/xsh096011/article/details/107187881

分库:

垂直分片:(按业务划分,或功能拆分,解决单库性能问题)
拆分前,一个数据库由多个数据表构成,每个表对应不同业务。拆分后按照业务归类,分布到不同数据库,将压力分散至不同数据库。

特点:
(优点)库表职责单一,复杂度降低,易于维护。
单库或单表压力降低,相互间影响降低;

(缺点):
部分表关联无法在数据库级别完成,需要在程序中完成;
单表大数据量仍存在性能瓶颈;
单表或单库热点访问仍对DB压力大;
事务处理更为复杂,需要分布式事务介入;
拆分到一定程度,扩展性会遇到限制;

MyCat_第5张图片
分库效果:

MyCat_第6张图片

分表:

水平分片:通过某个字段(或某几个字段),根据某种规则将数据分散至多个库或表中,每个分片仅包含数据一部分;(单表复杂,为解决单表大数据量问题)

特点:
(优点)解决单表单库大数据量和高热点访问性能瓶颈问题;
应用程序端整体架构改动相对较少;
事务处理相对简单;
切分规则定义好,基本较难遇到扩展性限制;

(缺点)拆分规则相对更复杂;
后期数据维护难度增加;
产品逻辑更复杂;
MyCat_第7张图片
MyCat_第8张图片

分库分表带来的问题:
https://www.yuque.com/lexiangqizhong/java/ckt9uw

你可能感兴趣的:(MyCat,MySql)