# 65.4.实施

65.4.1. GiST索引构建方法

# 65.4.1.GiST索引构建方法

构建要点索引最简单的方法就是逐个插入所有条目。对于大型索引,这往往比较慢,因为如果索引元组分散在整个索引中,并且索引足够大,无法放入缓存,则需要大量随机I/O。PostgreSQL支持两种初始构建GiST索引的替代方法:分类缓冲模式。

只有当索引使用的每个OPClass都提供了sortsupport功能,如中所述第65.3节。如果他们这样做,这种方法通常是最好的,因此默认情况下使用。

缓冲方法的工作原理是不立即将元组直接插入索引。它可以显著减少非有序数据集所需的随机I/O量。对于有序的数据集,好处更小或根本不存在,因为一次只有少数页面接收新元组,而且这些页面适合缓存,即使整个索引不适合。

缓冲方法需要调用处罚函数比简单方法更频繁,这会消耗一些额外的CPU资源。此外,缓冲区需要临时磁盘空间,直到生成索引的大小。缓冲也会影响结果索引的质量,无论是正面还是负面。这种影响取决于各种因素,比如输入数据的分布和操作符类的实现。

如果无法进行排序,则默认情况下,当索引大小达到时,GiST索引构建会切换到缓冲方法有效的_隐藏物_大小.缓冲可以通过手动强制或防止缓冲参数设置为“创建索引”命令。默认行为在大多数情况下是好的,但是如果输入数据是有序的,关闭缓冲可能会在一定程度上加快构建速度。