41 在Buffer Pool执行完增删改之后,写入日志文件的redo log长什么样?
2023/2/27大约 2 分钟
redo log里本质上记录的就是
表空间号+数据页号+偏移量+修改几个字节的值+具体的值
所以根据你修改了数据页里的几个字节的值,redo log就划分为了不同的类型,
MLOG_1BYTE
类型的日志指的就是修改了1个字节的值MLOG_2BYTE
类型的日志指的就是修改了2个字节的值- 还有修改了4个字节的值的日志类型,修改了8个字节的值的日志类型
- 如果你要是一下子修改了一大串的值,类型就是
MLOG_WRITE_STRING
,就是代表你一下子在那个数据页的某个偏移量的位置插入或者修改了一大串的值。
所以其实一条redo log看起来大致的结构如下所示:
日志类型(就是类似MLOG_1BYTE之类的),表空间ID,数据页号,数据页中的偏移量,具体修改的数据
只不过如果是MLOG_WRITE_STRING
类型的日志,因为不知道具体修改了多少字节的数据,所以其实会多一个修改数据长度
,就告诉你他这次修改了多少字节的数据,如下所示他的格式:
日志类型(就是类似MLOG_1BYTE之类的),表空间ID,数据页号,数据页中的偏移量,修改数据长度,具体修改的数据
简单给大家讲解一下redo log的日志的格式,其实没大家想的那么复杂,当然如果往深了说,那可能也比你想的复杂很多,比如redo log日志里面可能会记录你更新了哪些索引之类的,那就复杂了去了,但是这些东西就等我们讲到索引那块的时候再说好了!