InnoDB如果进行了大量删除造成了页的空洞,复用并没有直接删除,会造成页面存储的不连续,会造成读取性能下降吧?
因为复用之后的页不是按照逻辑顺序存储的了,是乱序的,在存储和键值顺序上
InnoDB如果进行了大量删除造成了页的空洞,复用并没有直接删除,会造成页面存储的不连续,会造成读取性能下降吧?
因为复用之后的页不是按照逻辑顺序存储的了,是乱序的,在存储和键值顺序上
4 回答1.2k 阅读✓ 已解决
8 回答1.2k 阅读
3 回答1k 阅读✓ 已解决
2 回答1.7k 阅读
1 回答845 阅读✓ 已解决
2 回答1.2k 阅读
2 回答1k 阅读
InnoDB如果进行了大量删除造成了页的空洞,这个空洞是指,一个页本来可以存储 m 条数据,现在只存储了 n 条(n<m),数据分布变得稀疏。这样造成的结果是: 1 维护索引树的成本变高;2 读取相同的数据量,要加载更多的数据页到内存。所以性能会下降。
数据页复用是指,如果一个数据页里面的数据全部都被删除,那么这个数据页会从索引树中剔除,在新分配数据页的时候再次使用。
InnoDB 不保证数据页在物理存储上是连续的,但是 InnoDB 会用指针连接前后两个数据页,共同构成一个双向链表,所以,InnoDB 会保证数据页在逻辑上是顺序的。