类型: | integer |
默认: | 150000 |
最低限度: | 0 |
最大: | 2147483647 |
上下文: | user |
重新开始: | false |
以来: | 9.6 |
弃用: | 10 |
当要被排序的元组数比这个数字小时,排序将会使用替换选择而不是快速排序 来产生其第一个输出。在内存受限的环境中这可能会有用, 这种环境中被输入到大型排序操作中的元组具有很强的物理逻辑关联。注意, 这不包括具有逆相关的输入元组。 替换选择算法可能会产生一次不需要合并的长时间运行, 其中使用默认策略会导致很多次运行并且必须被合并来产生最终的有序输出。 这可以允许排序操作更快完成。
默认是 150,000 个元组。注意,更高的值通常不会更有效,并且可能产生反效果, 因为优先队列对于可用的 CPU 高速缓存的尺寸很敏感, 然而默认策略会使用一种高速缓存透明算法运行。 这种性质允许默认的排序策略自动且透明地利用可用的 CPU 高速缓存。
把maintenance_work_mem设置为其默认值通常会阻止工具命令外部排序 (例如CREATE INDEX用来构建 B-树索引的排序)使用替换选择排序, 除非外部元组非常宽。
建议 [EN]
Disable, this setting will be removed from Postgres 11.