下一个数据页中用户记录的主键值必须大于上一个页中用户记录的主键值。
假设一个数据页最多存放3条记录,接着向index_demo表插入3条记录:
mysql> INSERT INTO index_demo VALUES(1, 4, 'u'),(3, 9, 'd'),(5, 3, 'y');
那么这些记录已经按照主键值的大小串联成一个单向链表了,如图所示:
再插入一条记录:
mysql> INSERT INTO index_demo VALUES(4, 4, 'a');
因为页10最多只能放3条数据,所以不得不再分配一个新页:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4KzfYmaX-1648395593942)(https://cdn.jsdelivr.net/gh/CerberusDong/pictures/image-20220327231639486.png)]
新分配的数据页编号可能并不是连续的,逻辑上连续。另外,页10中用户最大主键值是5,而页28中有一条记录的主键值是4,因为5 > 4,所以这就不符合下一个数据页中用户记录的主键值必须大于上一个页中用户记录的主键值的要求,所以再插入主键值为4的记录的时候需要伴随着一次记录移动,也就是把主键值为5的记录涌动到页28中,然后再把主键值为4的记录插入到页10中,过程如下:
在进行增删改操作过程中,必须通过一些诸如记录移动的操作来始终保证正状态一直成立:下一个数据页中记录用户记录的主键值必须大于上一个页中用户记录的主键值。这个过程称为页分裂。
原文链接:https://blog.csdn.net/weixin_43595854/article/details/123784620?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165934458816781790756801%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165934458816781790756801&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-4-123784620-null-null.nonecase&utm_term=%E8%87%AA%E5%BB%BAcdn
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/6235