MySQL事务的隔离性

49 阅读1分钟

锁:排他锁,如果一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁;

MVCC:多版本并发控制,指维护一个数据的多个版本,使得读写操作没有冲突。主要通过以下实现;

1、隐藏字段

trx_id(事务id),记录每一次操作的事务id,是自增的

roll_pointer(回滚指针),指向上一个版本的事务记录地址

2、undo log

回滚日志,存在老版本数据

版本链,多个事务并行操作某一行记录,记录不同事务修改数据的版本,通过rool_pointer指针形成一个链表

3、readView 解决的是一个事务查询选择版本的问题

根据readView的匹配规则和当前的一些事务id判断该访问哪个版本的数据

不同的隔离级别快照读是不一样的,最终的访问的结果不一样

RC:每一次执行快照读时生产ReadView

RR:仅在事务中第一次执行快照读时生产ReadView,后续复用