From 301102efe6f1601b38f4890ae4f51b7eed423942 Mon Sep 17 00:00:00 2001 From: asahi Date: Mon, 7 Jul 2025 00:39:39 +0800 Subject: [PATCH] =?UTF-8?q?doc:=20=E9=98=85=E8=AF=BB=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mysql/mysql文档/mysql_事务.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/mysql/mysql文档/mysql_事务.md b/mysql/mysql文档/mysql_事务.md index a3fb93a..0e1b6ab 100644 --- a/mysql/mysql文档/mysql_事务.md +++ b/mysql/mysql文档/mysql_事务.md @@ -139,7 +139,7 @@ log buffer由log block所组成,可以将log buffer看作是log block的数组 `LOG_BLOCK_FIRST_REC_GROUP`占用2个字节,表示log block中第一个日志所处的偏移量。 `LOG_BLOCK-FIRST_REC_GROUP`的取值可能存在如下场景: -- 该值大小和`LOG_BLOCK_HDR_DATA_LEN`相同,则代表当前block中`不包含新的日志` +- 该值大小和`LOG_BLOCK_HDR_DATA_LEN`相同,则代表当前block中`不包含新的日志`(即当前block中存储的存储的全是上一block中record的后续部分) 下图表示`事务T1的重做日志占用762字节`,`事务T2的重做日志占用100字节`的场景。 @@ -157,6 +157,20 @@ LSN(log sequence number)为一个`全局唯一且单调递增的64位数字 CHECKPOINT则是一个LSN值,同样为64位整数,代表位于`CHECKPOINT`之前所有的修改已经被持久化到数据库中,`位于CHECKPOINT之前的redo log内容可以被安全的覆盖`。 +##### log block tailer +log block tailer中仅由一个部分组成,即`LOG_BLOCK_TRL_NO`,其值和`LOG_BLOCK_HDR_NO`相同。 + +#### log group +log group被称为重做日志组,其中包含多个redo log文件,innodb中只有一个log group。 + +log group只是一个逻辑上的概念,由多个redo log file组成。log group中每个redo log file大小相同。redo log file中存储的是redo log block,`在innodb引擎运行过程中,会将redo log buffer中的log block刷新到磁盘文件中。` + +##### redo log buffer刷新到磁盘中的时机 +redo log buffer会在如下时机将log block刷新到磁盘中: +- 事务提交时 +- log buffer中有一半的内存空间已经被使用时 +- log checkpoint时 +