回答
在 MySQL 中,页分裂(Page Split)指一个数据页已满且需要插入新的记录时,InnoDB 将当前数据页的部分记录迁移到一个新的页中,以便新纪录的插入。通常发生在插入记录时。
页合并(Page Merge)指一个数据页的使用率低于阈值时,InnoDB 会将该页的记录合并到相邻的页中,并释放该数据页。通常发生在删除记录时。
页分裂
一、页分裂过程
- 定位数据页,找到需要插入新纪录的数据页。
- 页分裂,将该数据页一分为二,创建一个新的数据页。
- 移动记录,将一半的记录从原页移动至新页。
- 更新,更新 B+ 树内部节点,以映射新的页结构。
InnoDB 的索引结构是 B+ Tree,它是一颗有序的平衡多叉树。
插入数据时,根据主键定位到数据页(假设编号为10)插入记录,假如该数据页已经填充满了,那么数据页10会分裂成两个新的半满页,一个包含原有数据的一部分,另一个包含新插入的数据。
二、页分裂问题