更新日期:2024年09月11日
创建vs 插入
由于可能要为每个项目插入很多键,所以GIN 索引的插入可能比较慢。对于向表中大
量插入的操作,
我们建议先删除GIN 索引,
在完成插入之后再重建索引。
与GIN 索引创建、
查询性能相关的GUC 参数如下:
GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
1286
maintenance_work_mem
GIN 索引的构建时间对maintenance_work_mem 的设置非常敏感。
work_mem
在向启用了FASTUPDATE 的GIN 索引执行插入操作的期间,只要待处理实体列表的
大小超过了work_mem,
系统就会清理这个列表。
为了避免可观察到的响应时间的大起大落,
让待处理实体列表在后台被清理是比较合适的(比如通过autovacuum)。前端清理操作可
以通过增加work_mem 或者执行autovacuum 来避免。然而,扩大work_mem 意味着如果发
生了前端清理,那么他的执行时间将更长。
gin_fuzzy_search_limit
开发GIN 索引的主要目的是为了让GBase 8c 支持高度可伸缩的全文索引,并且常常会
遇见全文索引返回海量结果的情形。而且,这经常发生在查询高频词的时候,
因而这样的结
果集没什么用处。
因为从磁盘读取大量记录并对其进行排序会消耗大量资源,
这在产品环境
下是不能接受的。
为了控制这种情况,
GIN 索引有一个可配置的返回结果行数的软上限的配
置参数gin_fuzzy_search_limit。缺省值0 表示没有限制。如果设置了非零值,那么返回结果
就是从完整结果集中随机选择的一部分。
“软上限”的意思是返回结果的实际数量可能与指
定的限制有偏差,这取决于查询和系统随机数生成器的质量。