首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >修改后的DB_TRX_ID隐藏字段会比使用的字段小吗?

修改后的DB_TRX_ID隐藏字段会比使用的字段小吗?
EN

Stack Overflow用户
提问于 2019-03-25 02:54:30
回答 1查看 108关注 0票数 1

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-25 06:21:25

如果您对InnoDB内部存储格式感兴趣,您可能想要Jeremy Cole的Innodb_ruby tool

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

代码语言:javascript
复制
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格式的更多信息:

以下是他的博客帖子列表:https://blog.jcole.us/innodb/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55327342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档