(1)mysql中的页的recongize是做什么的,为什么要recongize?
页的整理操作只需记录页的编号以及日志的类型
(2)物理逻辑日志是怎么回事?
物理日志的尺寸比较大,逻辑日志比较小,在保证记录一致性的情况下,各有优劣
物理逻辑日志是指页是物理日志,页内部操作是逻辑日志
(3)LSN中的具体概念?
LSN在每个页中都有,并且记录的是字节数
表示事务写入到redo日志的字节量
(4)undo日志与redo日志?
undo 操作是记录的相反操作,如果记录日志是insert,则undo就是delete
因此,undo日志是逻辑日志,不是物理逻辑日志,如果使用物理逻辑记录,那么回滚的代价太大了
undo日志的组织方式也因此不是按页的方式组织,因为页是物理的组织方式,而redo日志是物理逻辑日志
undo日志也用来实现了mvcc中的一致的非锁定读功能,就是读取的时候不需要去等待记录上的x锁
直接去取记录的之间的版本记录,这个只有undo日志才能这样的记录,也就是镜像记录
undo页中可以保存多个事务的undo日志,undo日志也会产生redo日志
说白了,数据库就是实现协调对记录的并发访问,而并发的本质就是资源的竞争
(6)检查点机制如何工作?
检查点是通过LSN工作,对比检查点的LSN与redo 日志中的LSN,将差距的字节数通过relog来replay
redo日志实际上是循环复用的,检查点机制是为了缩短数据库的恢复时间
(7)为什么说事务的持久化,就是redo日志的持久化?
redo日志是数据的全量持久化,还是增量持久化?
当事务提交时,首先将redo 日志写入文件,实际数据页刷新到磁盘的操作由检查点负责,这个就是WAL机制
宕机后,通过redo日志来完成数据的恢复
innodb_flush_log_at_trx_commit这个实际是控制事务写入redo 日志的时间点
说明实际的数据与redo 日志的持久化是分离的,redo日志只是为了以防万一的恢复机制
阅读(1025) | 评论(0) | 转发(0) |