福哥答案2020-12-29:
答案来自此链接,答案相当详细:
面试的时候受 《MySQL技术内幕 InnoDB存储引擎 第2版.pdf》这本书的第188页的影响,回答错了。

删除一条记录,数据原有的被废弃,记录头发生变化,主要是打上了删除标记。也就是原有的数据 deleted_flag 变成 1,代表数据被删除。但是数据没有被清空,在新一行数据大小小于这一行的时候,可能会占用这一行。这样其实就是存储碎片,要想减少存储碎片,可以通过重建表来实现(例如对于高并发大数据量表,除了归档,还可以通过利用无锁算法Alter修改字段来重建表增加表性能)。


评论