数据库记录中的三个隐式字段

记录中的隐藏字段 当我们创建表时,除了我们指定的字段,MySQL会额外在这个表创建三个字段,为DB_TRX_ID、DB_ROLL_PTR、DB_ROW_ID

隐藏字段含义
DB_TRX_ID最近一次修改的事务ID,记录插入这条记录或最后一次修改该记录的事务ID
DB_ROLL_PTR回滚指针,指向这条记录的上一个版本,用于配合undo log,指向上一个版本
DB_ROW_ID隐藏主键,如果表结构没有指定主键,将会生成该隐藏字段(当创建的表没有指定主键时,才会生成DB_ROW_ID字段)

 

DB_TRX_ID字段、DB_ROLL_PTR字段、undo log日志、undo log版本链、readview是一起的,共同完成快照读到底是拿哪个版本的数据, 后续会逐步深入学习。注意对于RC隔离级别,每一次select都是一次快照读,快照读读的数据可能包含很多版本,就需要我们后续几节课的 学习,才能知道我们平时用的select语句,拿的是undo log版本链的哪个版本的数据

 

如何查看ibd文件,以linux为例,我们需要去磁盘文件查看表结构,执行如下

会发现全部是ibd文件,这些ibd文件就是前面学的独立表空间文件

 

查看ibd文件的数据字典信息,例如查看stu表空间文件,目的就是查看一下stu表里面是否有我们上面讲的隐藏字段

当结果展示出来的时候,我们滑到顶部,找到"columns":[{},{},...],表示这张表里面有哪些字段