我正在实现数据库(大学项目)。 我在 github 上看到了 innodb 图
我看到我们维护了一个删除链,为什么我们要这样做,因为如果我们写整个 block (因为如果写整个 block 更有效)为什么不简单地删除该记录。
维护删除链有什么用。我们可以看到他们使用链表,所以删除整条记录不需要额外的成本。请解释或告诉我哪里错了?
最佳答案
您不能只从 B 树中删除一个项目。你必须确保基本的 B-tree 条件仍然成立,这可能涉及合并相邻节点,这将留下一个节点,你必须知道这一点,所以你必须将它放入一个空闲列表以供以后重用,这样您就不会无限期地增加文件。
如果你在谈论记录,你仍然必须知道删除的记录在哪里,以便重用。没有“只删除[ing]记录”这样的事情。
关于mysql - 为什么mysql make delete offset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33886774/