赞
踩
redo log
redo 日志的本质是记录了一下事务对数据库做了哪些修改,所以 redo 日志都会有下面这些通用的结构:
type:该条redo日志类型
MLOG_1BYTE(type字段对应的十进制数字为1):表示在页面的某个偏移量处写入1个字节的redo日志类型。
MLOG_2BYTE(type字段对应的十进制数字为2):表示在页面的某个偏移量处写入2个字节的redo日志类型。
MLOG_4BYTE(type字段对应的十进制数字为4):表示在页面的某个偏移量处写入4个字节的redo日志类型。
MLOG_8BYTE(type字段对应的十进制数字为8):表示在页面的某个偏移量处写入8个字节的redo日志类型。
MLOG_WRITE_STRING(type字段对应的十进制数字为30):表示在页面的某个偏移量处写入一串数据。
space ID:表空间ID
page number:页号
data:该条redo 日志的具体内容
MLOG_COMP_REC_INSERT
,代表插入一条使用紧凑行格式的记录n_uniques
代表这条记录的唯一值,field1_len ~ fieldn_len
代表着该记录若干个字段占用存储空间的大小,offset代表的是该记录的前一条记录在页面中的地址等等,根据这些参数,在恢复的时候调用这个函数,就可以将数据恢复到系统崩溃前的样子redo log block
:redo 日志存储单元,都是一个个页
log block header
:
redo 日志缓冲区:设计InnoDB的大佬为了解决磁盘速度过慢的问题而引入了Buffer Pool。同理,写入redo日志时也不能直接直接写到磁盘上,实际上在服务器启动时就向操作系统申请了一大片称之为redo log buffer的连续内存空间,翻译成中文就是redo日志缓冲区,我们也可以简称为log buffer。这片内存空间被划分成若干个连续的redo log block,就像这样:
log buffer
innodb_log_file_size × innodb_log_files_in_group
前4个block分别为什么:
log buffer
时,就会指向第一个block 的偏移量为12字节的地方,然后lsn就会随之增加:8704+12 = 8716Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。