2024-11-09
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/1153804589

回答

在 MySQL 中,页分裂(Page Split)指一个数据页已满且需要插入新的记录时,InnoDB 将当前数据页的部分记录迁移到一个新的页中,以便新纪录的插入。通常发生在插入记录时。

页合并(Page Merge)指一个数据页的使用率低于阈值时,InnoDB 会将该页的记录合并到相邻的页中,并释放该数据页。通常发生在删除记录时。

页分裂

一、页分裂过程

  1. 定位数据页,找到需要插入新纪录的数据页。
  2. 页分裂,将该数据页一分为二,创建一个新的数据页。
  3. 移动记录,将一半的记录从原页移动至新页。
  4. 更新,更新 B+ 树内部节点,以映射新的页结构。

InnoDB 的索引结构是 B+ Tree,它是一颗有序的平衡多叉树

插入数据时,根据主键定位到数据页(假设编号为10)插入记录,假如该数据页已经填充满了,那么数据页10会分裂成两个新的半满页,一个包含原有数据的一部分,另一个包含新插入的数据。

二、页分裂问题