您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

MySQL Redo与Undo日志是什么

2024/3/21 4:41:10发布32次查看
1. redo日志的介绍redo日志是物理日志,记录的是页面的变化。
1.1 redo日志的作用提升数据库写入效率
保证数据库不丢数据,进行数据恢复
1.2 redo日志的格式与类型所谓redo的组织方式,就是如何把需要的redo内容记录到磁盘文件中,以方便高效的redo写入,读取,恢复以及清理。我们这里把redo从上到下分为三层:逻辑redo层、物理redo层和文件层。
逻辑redo层
这一层是真正的redo内容,顺序的数据流,redo由多个不同type的多个redo记录收尾相连组成,有全局唯一的递增的偏移sn,innodb会在全局log_sys中维护当前sn的最大值,并在每次写入数据时将sn增加redo内容长度。
物理redo层
磁盘是块设备,innodb中也用block的概念来读写数据,一个block的长度os_file_log_block_size等于磁盘扇区的大小512b,每次io读写的最小单位都是一个block。
文件层
最终redo会被写入到redo日志文件中,并且日志文件是循环写入的
2. 写入redo日志的流程(mtr)用户线程的操作会首先写进log buffer中
log buffer中的日志会顺序写入redo逻辑日志中
之后会落盘持久化存储到磁盘上
之后通知用户已经存储完成了
3. checkpoint机制checkpoint是redo日志中脏页的标记位,有以下两个作用:
维护redo日志,方便清理
减小重启的工作量
数据库恢复流程:
读取 checkpoint 信息•从 checkpoint 位置开始读取剩余日志
解析日志并按 space_no 与 page_id 构建 hash 表
应用 redo 日志,redo日志回放保证幂等性
解析 binlog 构建 xid 列表
扫描回滚段构建待提交事务列表
回滚掉未在 xid 列表中的事务
4. undo日志介绍the undo log is a logical log that records the incremental changes of data, and its function is to ensure the atomicity of transactions and transaction concurrency control. rewritten: the undo log serves to guarantee the atomicity of transactions and control their concurrency by logging the incremental changes in data, functioning as a logical log.。它可以用于回滚事务,实现多版本控制(mvcc),并解决读写冲突和一致性读取的问题。
5. mvccmvcc的意义:
读写互不阻塞;
降低死锁概率;
实现一致性读。
undolog在mvcc的作用:
每个事务有一个单增的事务id;
数据页的行记录中包含了db_row_id,db_trx_id,db_roll_ptr;
db_roll_ptr将数据行的所有快照记录都通过链表的结构串联了起来。
以上就是mysql redo与undo日志是什么的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product