MySQL:关于InnoDB实现MVCC,对DB_TRX_ID字段的疑惑

网络上文章对DB_TRX_ID字段的描述大致如下:

在insert操作时, “创建时间”=DB_TRX_ID,这时,“删除时间”是未定义的;
在update操作时,复制新增行的“创建时间”=DB_TRX_ID,删除时间未定义,旧数据行“创建时间”不变,删除时间=该事务DB_TRX_ID;

我困惑的是:
DB_TRX_ID仅仅为一个隐藏字段,是怎么同时表示“创建时间”和“隐藏时间”两个值的?

我的理解是:
DB_TRX_ID仅保存事物ID,并不关心该操作是INSERT还是UPDATE,文章里所谓的“创建时间”“删除时间”仅仅是一种描述。

请问前辈们是怎么理解这段话的

阅读 4.2k
1 个回答

DB_TRX_ID 只是 事务ID,
可以把Insert 和 Delete看做一个业务函数,

DB_TRX_ID仅仅为一个隐藏字段,是怎么同时表示“创建时间”和“隐藏时间”两个值的?

是由业务函数内部实现的, 创建时间删除时间只是业务中的一个概念

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏