一个简单的测试:
start transaction; insert into tb1 values(3, repeat(‘a‘, 65000),‘x‘,1); --commit; rollback;
下图分别是 tb1.ibd 在插入前,回滚前,回滚后的文件大小:
有人在QQ群问原因。
---------------------------------------
其实原因很简单:
131072-98304=163840-131072=32768
所以:回滚insert = delete + re-insert ,而 delete是指设置一下flag,so ... 内容增大一倍。
insert 操作的回滚,先要delete之前插入的值,然后重新insert一次,而delete是逻辑删除,也就是设置一个flag,没有真正的删除。这就是原因。
时间: 2024-10-06 22:30:15