mysql事务

447 阅读2分钟

事务是数据库管理系统执行过程中的一个逻辑单元,由有限的操作序列构成。

事务是提交和回滚的原子单元

ACID

一组数据库设计原则。

事务有4个特性,即ACID。

个人理解是事务的设计模型。

针对,数据被破坏,软件崩溃,硬件故障,导致结果被篡改,发明的一致性检查和崩溃恢复机制。

Atomic 原子性

一个事务中的多个操作,要么全部成功,要么全部失败

Consistency 一致性

事务开始到结束:数据从一个确定状态到另外一个确定的状态。事务结束时不出现中间状态。

Isolution 隔离性

并发的多个事务,每个事务有各自的完整数据空间。各有各的跑道

Durability 持久性

事务结束后,结果永久保存。即使断电,可恢复到事务结束后的结果

隔离级别

RU

read uncommit 读未提交

即:可以读取到未提交的事务的数据

会读到脏数据,即有「脏读」现象。

RC

read commit 读提交

即:只能读取到提交的事务后的数据

同一事务中同一个读取操作,会读到不同的数据,即会发生「不可重复读」现象

事务 t1  两次同样的“读”期间,即使 t2 写入 或者 更新 ,读取的内容都一样

RR

read repeat 可重复读

即:一个事务运行中,可以重复读取到一致的数据。

但可能出现「幻读」现象。当检查不存在记录,再插入时发现已经存在了,出现了幻像。

事务 t1  两次同样的“读”期间,即使 t2 写入 或者 更新 ,读取的内容都一样

串行

一个事务的每一步操作都会上锁,

一个事务执行完,另一个事务才执行

更新丢失

脏读

不可重复读

幻读

RU

×

RC

×

×

RR

×

×

×

串行

×

×

×

×

性能

数据正确性

                                 

参考文章

更新丢失 参考文章:

www.dazhuanlan.com/2020/03/11/…

“重复读” 参考文章:juejin.cn/post/684490…

“幻读” 请参考文章:segmentfault.com/a/119000001…