服务器 频道

PostgreSQL手册之查询规划

 【IT168 服务器学院规划器方法配置
    这些配置参数提供了一个用于影响查询优化器选择的查询规划的原始的方法。 如果优化器为特定的查询选择的缺省规划并不是最优, 那么我们就可以通过使用这些配置参数强制优化器选择一个更好的规划来临时解决这个问题。 不过,永久地关闭这些设置几乎从不是个好主意。 更好的改善优化器选择的规划的方法包括配置 规划器开销常量, 更频繁运行 ANALYZE, 增大配置参数 default_statistics_target 的值, 以及使用 ALTER TABLE SET STATISTICS 为某个字段增加收集的统计信息。


    enable_hashagg (boolean)

    打开或者关闭查询规划器对散列聚集规划类型的时候。缺省是打开。

    enable_hashjoin (boolean)

    打开或者关闭查询规划器对散列连接规划类型的使用。 缺省是打开。

    enable_indexscan (boolean)

    打开或者关闭查询规划期对索引扫描规划类型的使用。 缺省是打开。

    enable_mergejoin (boolean)

    打开或者关闭查询规划器对融合连接规划类型的使用。 缺省是打开。

    enable_nestloop (boolean)

    打开或者关闭查询规划器对嵌套循环连接规划类型的使用。 我们不可能完全消除嵌套循环连接,但是把这个变量关闭就会让规划器在存在其它方法的时候优先选择其他的。 缺省是打开。

    enable_seqscan (boolean)

    打开或者关闭查询规划器对顺序扫描规划类型的使用。 我们不可能完全消除顺序扫描,但是把这个变量关闭会让规划器在存在其它方法的时候优先选择其它的。 缺省是打开。

    enable_sort (boolean)

    打开或者关闭查询规划器使用明确的排序步骤。我们不可能完全消除明确的排序, 但是把这个变量关闭可以让规划器在存在其它方法的时候优先选择其它方法。 缺省是打开。

    enable_tidscan (boolean)

    打开或者关闭查询规划器对 TID 扫描规划类型的使用。 缺省是打开。

    规划器开销常量

    注意: 糟糕的是,现在还没有定义得很合理的方法来判断下面出现的"开销"变量族的理想数值。 我们鼓励你做各种试验并分享你的发现。


    effective_cache_size (floating point)

    为规划器设置在一次索引扫描中可用的磁盘缓冲区的有效大小。 这个参数在计算一个索引的开销的预计值的时候会加以考虑; 一个更高的数值会导致很可能使用索引扫描,数值低了会更有可能选择顺序扫描。 在设置这个参数的时候,你还应该考虑 PostgreSQL 的数据文件会使用的的共享缓冲区和内核的磁盘缓冲。 还有,还要考虑预计会有的使用不同索引的并发查询数目, 因为它们必须共享可用的内存空间。这个参数对 PostgreSQL 分配的共享内存大小没有影响, 它也不会使用内核磁盘缓冲;它只用于估算。数值是用磁盘页来计算的, 通常每个页面是 8192 字节。缺省是 1000。

    random_page_cost (floating point)

    设置规划器计算的一次非顺序磁盘页面抓取的开销。 这是以顺序磁盘页面抓取的开销的倍数计量的。 更高的数值令优化器更倾向于选择一次顺序扫描,低数值的时候则倾向于使用索引扫描。 缺省是四。

    cpu_tuple_cost (floating point)

    设置规划器预计在一次查询中处理一个数据行的开销。 这是以一次顺序页面抓取的开销的分数来计量的。 缺省是 0.01。

    cpu_index_tuple_cost (floating point)

    设置在一次索引扫描中规划器计算出来的处理每条索引行的开销。 这是以一次顺序页面抓取的开销的分数来计量的。缺省是 0.001。

    cpu_operator_cost (floating point)

    设置规划器计算出来的处理一条WHERE子句中的每个操作符的开销。 这是以一次顺序页面抓取的开销的分数来计量的。缺省是 0.0025。

0
相关文章