doc: 阅读mysql innodb文档
This commit is contained in:
@@ -299,7 +299,7 @@ innodb通过segment来管理undo log,其管理方式如下:
|
||||
该变量设置了undo tablespaces的数量。
|
||||
|
||||
##### purge
|
||||
在事务i提交之后,并不能立刻删除undo log以及undo log所在的页,`其他事务仍有可能通过undo log来还原数据行的之前版本`。故而,在事务提交时,会将undo log放入到一个链表中,交由purge线程来决定是否最终删除undo log以及undo log所在的页。
|
||||
在事务提交之后,并不能立刻删除undo log以及undo log所在的页,`其他事务仍有可能通过undo log来还原数据行的之前版本`。故而,在事务提交时,会将undo log放入到一个链表中,交由purge线程来决定是否最终删除undo log以及undo log所在的页。
|
||||
|
||||
> purge代表`清空不再被需要的旧版本数据行及其对应的undo log记录。
|
||||
|
||||
@@ -308,6 +308,8 @@ innodb通过segment来管理undo log,其管理方式如下:
|
||||
##### undo页的重用设计
|
||||
在innodb对undo页的设计中,考虑了对undo页的重用。当事务提交时,首先会将undo log放在链表中,然后判断undo页的使用空间是否小于`3/4`。如果是,代表该undo页可以被重用,之后新的undo log会记录在当前undo log的后面。
|
||||
|
||||
> 即undo page是可被重用的,当事务提交时,如果undo log的使用空间小于3/4,那么该undo页是可以被重用的,一个undo页中可能包含多个undo log
|
||||
|
||||
#### 核心概念
|
||||
##### rollback segment
|
||||
undo tablespace由rollback segment构成,每个undo tablespace最多支持128个rollback segment,`innodb_rollback_segments`定义了rollback segments的数量。
|
||||
@@ -315,7 +317,15 @@ undo tablespace由rollback segment构成,每个undo tablespace最多支持128
|
||||
##### undo slots
|
||||
undo slot是rollback segment内的slot,由rollback segment进行管理。
|
||||
|
||||
undo slot主要用于关联undo segment,`当事务启动时,系统会从rollback segment中获取一个空闲的undo slot`,`成功获取undo slot后即代表关联了一个undo segment`
|
||||
undo slot主要用于关联undo segment,`当事务启动时,系统会从rollback segment中获取一个空闲的undo slot`,`成功获取undo slot后即代表关联了一个undo segment`。
|
||||
|
||||
每个undo log slot中会存储一个`page_no`,其指向undo log segment的起始页位置。
|
||||
|
||||
##### undo segment
|
||||
undo segment为undo slot指向的空间,undo segment中包含多个undo pages,而undo segment中则包含了undo log。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user