From b90bb79459bb3fe82410ee1609e009bb07f4983c Mon Sep 17 00:00:00 2001 From: asahi Date: Wed, 13 Aug 2025 17:08:13 +0800 Subject: [PATCH] =?UTF-8?q?doc:=20=E9=98=85=E8=AF=BBmysql=20mvcc=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mysql/mysql文档/mysql_mvcc_impl.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mysql/mysql文档/mysql_mvcc_impl.md b/mysql/mysql文档/mysql_mvcc_impl.md index 34a6df0..3e5af5d 100644 --- a/mysql/mysql文档/mysql_mvcc_impl.md +++ b/mysql/mysql文档/mysql_mvcc_impl.md @@ -61,4 +61,11 @@ purge操作在后台由一个或多个purge threads执行。purge threads的数 `innodb_max_purge_lag`的默认值为0,代表默认不存在max purge lag。 +## Multi-Versioning and Secondary Indexes +在mvcc中,对待聚簇索引和辅助索引的方式不同。在聚簇索引中,record中的列是`update in-place`,并且其hidden system columns指向undo log records,通过undo log records可以还原数据的先前版本。 +但是,辅助索引不包含hidden system columns,并且对于辅助索引的更新也不是update in-place。 + +当辅助索引的column被更新时,旧的辅助索引记录将会被标记为delete marked,并且插入新的辅助索引记录。`delete marked index records`最终会被purge。 + +当辅助索引中的index record被`delete marked`或`辅助索引页被newer transaction(更新的事务)更新时,innodb将会在聚簇索引中查询记录`。