Если вам интересны внутренние форматы хранения InnoDB, вам может понадобиться инструмент Джереми Коула Innodb_ruby .
Я попытался создать таблицу test.foo
с 1 строкой и обновил строку серией транзакций. Затем я могу использовать сценарий Джереми Коула, чтобы сбросить страницу:
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. Поскольку я делаю дальнейшие обновления строки, это значение изменяется. Вы можете попробовать сами и посмотреть, как меняется значение.
Прочтите серию постов Джереми в блоге, чтобы узнать больше о формате InnoDB:
Вот список его сообщений в блоге: https://blog.jcole.us/innodb/