posgresql中的索引碎片



我不知道什么能准确地表示postgres索引的碎片。在pgstattuple的源代码中,我发现了这个注释,但对我来说并不特别清楚

/**如果下一个叶子在前一个块上,则意味着*碎片化。*/

Btree叶页形成一个逻辑链(一个双链表(,如果你沿着这个链前进,你会遇到排序的键值。它们还有一个";物理";顺序,文件中的块号。如果链接列表后面的下一个页面是到一个"碎片",则该扩展认为是碎片;物理上";文件的前一页。

你可以出于各种原因对此提出质疑,但这就是该扩展所采用的定义。例如,如果链表中逻辑上的下一页是向前100页,那么它就像向后一页一样支离破碎。但是,如果它确实向前跳过了一堆,那么其他的人必须向后指才能把它们捡起来(除非它们未使用(,所以当"跳过"时就会被计数;其他人";遇到。此外;物理";文件中页面的顺序实际上只是";逻辑";另一个抽象层(文件系统(的顺序和不同的文件系统对它的处理方式不同。

最新更新