事务与分布式事务原理与实践-01

本文深入探讨了事务处理的基本概念,包括事务的ACID特性,单机事务与分布式事务的区别,以及分布式事务中常见的问题如死锁与故障恢复。同时,文章详细介绍了现代数据库如何通过MVCC机制实现高并发,以及在事务处理中如何平衡性能与一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

事务

分布式事务:

事务是什么?

事务处理的常见问题

单机事务和分布式事务

分布式事务遇到的问题

事务简介

 

事务的本子就是(锁      和 并发的关系)

优势:容易理解

劣势:性能较低

容易理解的模型性能都不好,性能好的模型都不容易理解。

性能好,锁的颗粒度就要尽可能的小。颗粒度小就增加了开发的难度。

 

事务简介-----------单个事务单元

一个事务单元 Bob 给Smith 100块

事务要保证的是就是要保证事务的一致性。

ACID(保证事务完整性)

这些也是一个事务单元 :

1、商品要建立一个是基于GMT_Modified 的索引;

2、从数据中读取一行记录;

3、想数据库写入一行记录,同时更新这行记录的所有索引

4、删除整张表

 

一组事务单元

Smith 给了job 100块

事务-------产生的原因

事务单元之间的happen-before 关系

读写    写读   读读   写写

问题是:

如何能够以最快的速度完成?

又如何保证上面四种操作的逻辑顺序,又是很重要的。

事务 -------排队发

序列化读写

优势-------不需要冲突控制

劣势-------慢速设备。。。。。。。。。。。。

事务--------------排他锁

针对同一个单元的访问进行控制(不同的事务单元可以并行进行)。

如果有能发生冲突那就串行,如果没有冲突的可能就并行。

事务单元之间的happen ------before 关系

事务--------------读写锁(I 隔离级别(读未提交、读已提交、可重复读、串行执行)

 

现在主流的数据库实现的方法: MVCC是数据库的并发性非常好。

MVCC可以让数据库写读都不会阻塞,但是也有代价:系统实现的并发有难度。(undo log 和redolog文件超大的问题)

能够做到写不阻塞读;

事务单元与事务单元之间的关系。

事务处理常见问题:

事务处理:

事务谁先谁后 一个读请求应该读哪一个写之后的数据?(事务版本号)

逻辑时间戳

SCN(oracle)

TRX_id (innodb)

 

事务处理------ 故障恢复

可能的错误情况

业务熟悉不匹配时,需要回滚。

系统崩溃时 ,需要回滚

事务处理-------------死锁与死锁监测

死锁的解决方案:

尽可能不死锁

碰撞检测(锁等待相互锁等待,杀死其中的一个锁等待,这个是应用最多方法)

等待锁超时

 

从单机事务到分布式事务

分布式事务与单机事务,相同与不同

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值