mysql-事物隔离级别-mvcc多版本控制原理

mysql-事物隔离级别-mvcc多版本控制原理,第1张

mysql-事物隔离级别-mvcc多版本控制原理 解决mysql行锁

mysql 事物没提交或者回滚,会让行锁没释放,可以查询当前事物表 然后kill 结束掉锁;

mysql事物隔离级别

读未提交(READ UNCOMMITTED)
A事物能读到B事物未提交的数据,可能会产生脏读。
读已经提交 (READ COMMITTED)
A事物只能读到B事物已经提交的数据,可以避免脏读。
可重复读 (REPEATABLE READ)(innerDB默认)
A事物开始读到B事物的数据,后面就一直是这个数据。
串行化 (SERIALIZABLE)
变成单线程,一个事物一个事物执行。

MVCC多版本控制

什么是MVCC?
通过多版本并发控制,实现对数据库的并发访问,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读

mvcc多版本控制原理
当前读:insert delete update
快照读:普通select查询
db_trx_id: 最近修改(修改/插入)事务ID:记录创建这条记录/最后一次修改该记录的事务ID
db_roll_ptr: 回滚指针,指向这条记录的上一个版本(存储于rollback segment里)

每次在做修改某行的时候,并且没有提交事物,该修改内容会插入到改行的版本链中,然后其他事物根据事物的隔离级别,去取版本链中的某一行数据,比如如果是读未提交的情况下,其他事物产生的视图里面的数据就是链表头节点,也就是 最新的数据。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5482254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存