mysql事务详细介绍


当前第2页 返回上一页

隐藏字段

行记录除了我们自定义的字段外,还有数据库隐式定义的DB_TRX_ID,BD_ROLL_PTR,DB_ROW_ID等字段

DB_TRX_ID 最近修改事务id:
	6字节,记录创建这条记录或者最后一次修改该记录的事务id
DB_ROLL_PTR 回滚指针:
	7字节,指向这条记录的上一个版本,用于配合undolog,指向上一个旧版本
DB_ROW_ID 隐藏主键:
	6字节,如果数据库表没有主键,那么innodb会自动生成一个6字节的row_id

undo log

undo log被称之为回滚日志,表示进行insert,delete,update操作的时候产生的方便回滚日志

当进行insert操作的时候,产生的undo log只在事务回滚的时候需要,并且在事务提交之后可以被立刻丢弃
当进行update和delete操作的时候,产生的undo log不仅仅在事务回滚的时候需要,在快照读的时候也需要,所以不能随便删除,只有在快照读或事务回滚不涉及该日志时,对应的日志才会被purge线程统一清除(当数据发生更新和删除操作的时候都只是设置一下老记录,如果某个记录的deleted_id为true,并且DB_TRX_ID相对于purge线程的read view可见,那么这条记录一定可以被清除的)

原理

当进行insert操作时,会生成对应delete语句
当进行delete操作时,会备份原数据的insert语句
当进行update时,会记录原数据的update语句
这样操作方便记录回滚

read View

READ View是事务进行快照读操作的时候产生的读视图,在该事务执行快照的那一刻,会生成一个数据系统当前的快照,记录并维护系统当前活跃事务的id,事务的id值是递增的。

DB_ROW_ID DB_TRX_ID DB_ROLL_PTR c_name i_age
1 1 zhangsan1 18
2 2 1 zhangsan2 19
READ VIEW的最大作用是用来做可见性判断的,也就是说当某个事务在执行快照读的时候,对该记录创建一个Read View的视图,把它当作条件去判断当前事务能够看到哪个版本的数据,有可能读取到的是最新的数据,也有可能读取到的是最新的数据,也有可能读取的是当前记录的undolog中某个版本的数据
read view遵循的可见性算法主要是将要被修改的数据的最新记录中的DB_TRX_ID取出来,与系统当前其他活跃事务的id去对比,如果DB_TRX_ID跟READ VIEW的属性做了比较,不符合可见性,那么就通过DB_ROLL_PTR回滚指针去取出undolog中的DB_TRX_ID做比较,既遍历链表中的DB_TRX_ID,直到找到满足条件的DB_TRX_ID,这个DB_TRX_ID所在的旧记录就是当前事务能看到的最新老版本数据

可见性规则

了解可见性规则之前首先要了解下Read View中的三个全局属性

trx_list:
	一直数值列表,用来维护Read View生成时刻系统正活跃的事务ID
up_limit_id:
	记录trx_list列表中事务ID的最小ID
low_limit_id:
	Read View生成时刻系统尚未分配下一个事务ID

比较规则

1、首先判断DB_TRX_ID < up_limit_id,如果小于,则当前事务能看到DB_TRX_ID所在的记录,如果大于等于进入下一个判断
2、判断DB_TRX_ID >= low_limit_id,如果大于等于则代表DB_TRX_ID所在的记录在Read View生成后才出现的,那么对于当前事务肯定不可见,如果小于,进入下一步判断
3、判断DB_TRX_ID是否在活跃事务中,如果在,则代表在Read View生成时刻,这个事务还是活跃状态,还没有commit,修改的数据,当前事务也是看不到,如果不在,则说明这个事务在Read View生成之前就已经开始commit,那么修改的结果是能够看到的。

到此这篇关于mysql事务详细介绍的文章就介绍到这了,更多相关mysql事务内容请搜索

更多相关Mysql内容来自木庄网络博客


标签:Mysql

返回前面的内容

相关阅读 >>

mysql视图简介与操作的介绍(附代码)

win10下mysql 8.0.12 安装及环境变量配置教程

mysql创建内存表的方法

mysql怎么去除主键约束

linux如何查看mysql是否启动?

sql中关于distinct关键字的四种用法

mysql workbench怎么用

如何使用navicat进行mysql命令行操作?

如何使用mysql workbench?

mysql如何给表中添加列(字段)?

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...