栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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里)

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/490127.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号