通过简单地插入所有元组来构建大型 GiST 索引很容易变得很慢,因为如果索引元组分散在索引中并且索引大到不足以放入在缓存中,插入操作需要执行很多随机 I/O。从版本 9.2 开始,PostgreSQL 支持一种更有效率的方法来基于缓冲构建 GiST 索引,这能显著地减少用于非排序数据集所需的随机 I/O 数量。对于排序好的数据集这种收益很小甚至不存在,因为在那时只有少数页面会接收新元组,并且那些页面能放在缓存中(即便整个索引不能放在缓存中)。
但是,缓冲索引构建需要更频繁地调用penalty
函数,这会消耗更多额外的 CPU 资源。还有,在缓冲构建中使用的缓冲区需要临时磁盘空间,最多为结果索引的尺寸。缓冲也可能影响结果索引的质量,不管是正向还是负向。这种影响取决于多种因素,如输入数据的分布和操作符类的实现。
默认情况下,当索引尺寸达到effective_cache_size时,一个 GiST 索引构建会切换到缓冲方法。可以通过 CREATE INDEX 命令的buffering
参数手工打开或关闭这个特性。默认行为对大部分情况是好的,但是如果输入数据是排序好的,关闭缓冲特性可能会加速构建过程。
核心PostgreSQL发布包括了 表67.1中所示的 BRIN操作符类。 minmax操作符类存储范围内被索引列中出现的最小和最大值。 inclusion...
目录69.1. 系统目录声明规则69.2. 系统目录初始数据69.2.1. 数据文件格式69.2.2. OID分配69.2.3. OID引用查找69.2.4. 数组类型的...
70.2.1. 函数依赖70.2.2. N 个不同变量的计数70.2.3. MCV 列表70.2.1.函数依赖多元相关性可以用一个非常简单的数据集来演示 — ...
dblink_exec — 在一个远程数据库中执行一个命令大纲dblink_exec(text connname, text sql [, bool fail_on_error]) returns tex...
F.27.1. 函数F.27.2. 配置参数 pg_prewarm模块提供一种方便的方法把关系 数据载入到操作系统缓冲区或者 PostgreSQL缓冲区。可以...
SQL 视图(Views) 视图是可视化的表。 本章讲解如何创建、更新和删除视图。SQL CREATE VIEW 语句 在 SQL 中,视图是基于 SQL 语...
SQL UNIQUE 约束SQL UNIQUE 约束 UNIQUE 约束唯一标识数据库表中的每条记录。 UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了...