比较全的分库分表学习笔记

书籍资料
在这里插入图片描述
下载地址看最后面

是什么

在这里插入图片描述在这里插入图片描述
分库分表数据拆分有两种方式:垂直切分和水平切分
具体:垂直分库、水平分库、垂直分表、水平分表

垂直切分

垂直分表:

  1. 把不常用的字段单独放在一张表;
  2. 把text,blob等大字段拆分出来放在附表中;
  3. 经常组合查询的列放在一张表中;

垂直分库 :

  1. 专库专用

水平切分

  1. 哈希切分
  2. 时间切分
  3. 范围切分

分库分表带来的问题
1、事务一致性问题
2、跨节点关联查询 不支持
2、跨节点分页、排序,聚合
需要先在不同的分片节点中将数据 进行排序/聚合并返回,然后将不同分片返回的结果集进行汇总和再次排序/聚合。
如果是取第 N页,需要将所有节点前N页数据都取出来合并,再进行整体的排序 ,ShardingSphere 在两个方面进行了优化 ,流式处理+合并排序,避免过多的内存占用.
4、主键避重
5、公共表

Shardingjdbc

基础概念
逻辑表,真实表,数据节点,绑定表,广播表,分片键,分片算法,分片策略,主键生成
在这里插入图片描述
执行流程
SQL解析 => 查询优化 => SQL路由 => SQL改写 => SQL执行 => 结果归并 (流式归并、内存归并和装饰者归并)

读写分离
Sharding-JDBC读写分离则是根据SQL语义的分析,将写操作和读操作分别路由至主库与从库

副本实时性
1、根据业务敏感度决定是否采用读写分离
2、同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。

小总结:
一般来说,在系统设计阶段就应该根据业务耦合松紧来确定垂直分库,垂直分表方案,在数据量及访问压力不是特 别大的情况,首先考虑缓存、读写分离、索引技术等方案。若数据量极大,且持续增长,再考虑水平分库水平分表 方案。

分布式事务
在这里插入图片描述

扩容
在这里插入图片描述
(1)停机迁移方案

(2)双写迁移方案
简单来说,就是在线上系统里面,之前所有写库的地方,增删改操作,都除了对老库增删改,都加上对新库的增删改,这就是所谓双写,同时写俩库,老库和新库。

分布式事务

在这里插入图片描述
这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务。

分布式事务产生的场景

  • 跨JVM进程产生分布式事务
  • 单体系统访问多个数据库实例

理论:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分布式事务解决方案

有2PC、 TCC、可靠消息最终一致性、最大努力通知

1. 2pc

在这里插入图片描述
在这里插入图片描述
缺点:
在这里插入图片描述
在这里插入图片描述

2、3pc

在这里插入图片描述

2PC与3pc不同点
在这里插入图片描述
在cancommit precommit 阶段 协调者超时,或者参与者超时之后,仍未收到协调者的请求会中断事务

在这里插入图片描述

3、Seata AT模式,是2pc的优化

在这里插入图片描述
在这里插入图片描述

4、Tcc

在这里插入图片描述
TCC需要注意三种异常处理分别是空回滚、幂等、悬挂:

空回滚:
在没有调用 TCC 资源 Try 方法的情况下,调用了二阶段的 Cancel 方法,Cancel 方法需要识别出这是一个空回滚,然后直接返回成功。
在这里插入图片描述
幂等:
通过前面介绍已经了解到,为了保证TCC二阶段提交重试机制不会引发数据不一致,要求 TCC 的二阶段 Try、 Confifirm 和 Cancel 接口保证幂等,这样不会重复使用或者释放资源。

悬挂:
悬挂就是对于一个分布式事务,其二阶段 Cancel 接口比 Try 接口先执行。
在这里插入图片描述
在这里插入图片描述

4、可靠消息最终一致性

在这里插入图片描述
存在问题:
1.本地事务与消息发送的原子性问题
2、事务参与方接收消息的可靠性
3、消息重复消费的问题

解决方案

  • 本地消息表方案
  • RocketMQ事务消息方案

可靠消息最终一致性事务适合执行周期长且实时性要求不高的场景。引入消息机制后,同步的事务操作变为基于消息执行的异步操作, 避免了分布式事务中的同步阻塞操作的影响,并实现了两个服务的解耦。

5、最大努力通知

发起通知方通过一定的机制最大努力将业务处理结果通知到接收方。
具体包括:
1、有一定的消息重复通知机制。
2、消息校对机制。

  • 方案一
    在这里插入图片描述
  • 方案二
    在这里插入图片描述
    在这里插入图片描述

分布式事务对比分析

在这里插入图片描述
g-blog.csdnimg.cn/ed81c66fba3947d18a913594b5641a91.png)

下载地址
https://download.csdn.net/download/weixin_41276656/87348460

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值