Mysql DB_TRX_ID隐藏字段是否会修改为比使用时更小?

Mysql DB_TRX_ID隐藏字段是否会修改为比使用时更小?,mysql,innodb,Mysql,Innodb,根据mysql参考,集群索引记录中将添加6字节事务ID字段,并将其设置为创建/修改它的事务的值。 我的问题是: 假设事务1、2在mysql中处于活动状态,事务2修改了一条记录,同时将其事务ID设置为2。松开锁并退出。然后输入事务1并再次修改同一记录,事务ID是否会被修改为小于2:1?如果您对InnoDB内部存储格式感兴趣,您可能希望获得Jeremy Cole的 我尝试用一行创建一个表test.foo,并用一系列事务更新该行。然后我可以使用Jeremy Cole的脚本转储页面: innodb_sp

根据mysql参考,集群索引记录中将添加6字节事务ID字段,并将其设置为创建/修改它的事务的值。 我的问题是:
假设事务1、2在mysql中处于活动状态,事务2修改了一条记录,同时将其事务ID设置为2。松开锁并退出。然后输入事务1并再次修改同一记录,事务ID是否会被修改为小于2:1?

如果您对InnoDB内部存储格式感兴趣,您可能希望获得Jeremy Cole的

我尝试用一行创建一个表
test.foo
,并用一系列事务更新该行。然后我可以使用Jeremy Cole的脚本转储页面:

innodb_space -s ibdata1 -T test/foo -p 3 page-dump

...

records:
{:format=>:compact,
 :offset=>125,
 :header=>
  {:next=>112,
   :type=>:conventional,
   :heap_number=>2,
   :n_owned=>0,
   :min_rec=>false,
   :deleted=>false,
   :nulls=>[],
   :lengths=>{},
   :externs=>[],
   :length=>5},
 :next=>112,
 :type=>:clustered,
 :key=>[{:name=>"id", :type=>"BIGINT UNSIGNED", :value=>7}],
 :row=>[],
 :sys=>
  [{:name=>"DB_TRX_ID", :type=>"TRX_ID", :value=>2843},
   {:name=>"DB_ROLL_PTR",
    :type=>"ROLL_PTR",
    :value=>
     {:is_insert=>true, :rseg_id=>20, :undo_log=>{:page=>335, :offset=>272}}}],
 :length=>21,
 :transaction_id=>2843,
 :roll_pointer=>
  {:is_insert=>true, :rseg_id=>20, :undo_log=>{:page=>335, :offset=>272}}}
您可以在
:sys
键下看到DB_TRX_ID。当我进一步更新该行时,该值会更改。您可以自己尝试,看看值是如何变化的

阅读Jeremy的一系列博客文章,了解InnoDB格式的更多信息:


下面是他的博客帖子列表:

我很高兴。请记住,传统的堆栈溢出是向上投票一个对您有帮助的答案,或者将真正完全回答您问题的答案标记为“已接受”。看到我的坏消息了。我首先投票决定答案,结果发现我是堆栈溢出的新来者,我的投票不能用来影响排名。所以我放弃了其他行动,比如接受答案。