数据库记录中的三个隐式字段
记录中的隐藏字段 当我们创建表时,除了我们指定的字段,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为例,我们需要去磁盘文件查看表结构,执行如下
xxxxxxxxxx
cd /var/lib/mysql/bilibili && ll
会发现全部是ibd文件,这些ibd文件就是前面学的独立表空间文件
查看ibd文件的数据字典信息,例如查看stu表空间文件,目的就是查看一下stu表里面是否有我们上面讲的隐藏字段
cd /var/lib/mysql/bilibili && ibd2sdi stu.ibd
当结果展示出来的时候,我们滑到顶部,找到"columns":[{},{},...],表示这张表里面有哪些字段