InnoDB如果进行了大量删除造成了页的空洞,复用并没有直接删除,会造成页面存储的不连续,会造成读取性能下降吧?

InnoDB如果进行了大量删除造成了页的空洞,复用并没有直接删除,会造成页面存储的不连续,会造成读取性能下降吧?
因为复用之后的页不是按照逻辑顺序存储的了,是乱序的,在存储和键值顺序上

阅读 3.9k
1 个回答

InnoDB如果进行了大量删除造成了页的空洞,这个空洞是指,一个页本来可以存储 m 条数据,现在只存储了 n 条(n<m),数据分布变得稀疏。这样造成的结果是: 1 维护索引树的成本变高;2 读取相同的数据量,要加载更多的数据页到内存。所以性能会下降。

数据页复用是指,如果一个数据页里面的数据全部都被删除,那么这个数据页会从索引树中剔除,在新分配数据页的时候再次使用。

InnoDB 不保证数据页在物理存储上是连续的,但是 InnoDB 会用指针连接前后两个数据页,共同构成一个双向链表,所以,InnoDB 会保证数据页在逻辑上是顺序的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题