事务ACID

原子性(atomicity)

一致性(consistency)

隔离性(isolation)

持久性(durability)

构成.png

乐观丶悲观丶行丶表

MVCC

多版本并发控制,解决并发访问数据库系统时,提高读取效率,因为加锁以后会影响效率。

MVCC->当前读,总是读取最高版本的记录。

MVCC->快照读,读取历史版本的记录。

Undolog

为了回滚设计

select * from table ->快照读

Insert Update Delete ->当前读

select …… lock in share mod ->当前读

select …… for update ->当前读

例子.png

问:A最后select结果会体现B->update 结果吗?

答:看隔离级别。

MYSQL有不同的隔离级别,不同的隔离级别下读取的结果可能不同。

可重复度

RR->默认隔离级别

读已提交

RC

读未提交

无数据库使用方案

序列化

单线程操作

结论

RR:当事务B->commit之后事务A在没有commit之前它能获取到的是旧数据,只有在自己commit之后才能获取到新的数据。(也有特殊情况)

RC:当事务B->commit之后事务A立即就可以读取到最新的数据。

最后修改:2023 年 06 月 30 日
如果觉得我的文章对你有用,请随意赞赏