zoukankan      html  css  js  c++  java
  • PostgreSQL配置文件--QUERY TUNING

    5 QUERY TUNING

    5.1 Planner Method Configuration.

    下列参数控制查询优化器是否使用特定的存取方法。除非对优化器特别了解,一般情况下,使用它们默认值即可。

    5.1.1 enable_bitmapscan

    布尔型
    默认: enable_bitmapscan = on
    打开或者关闭规划器对位图扫描规划类型的使用。
    

    5.1.2 enable_hashagg

    布尔型
    默认: enable_hashagg = on
    打开或者关闭查询规划器对散列连接规划类型的使用。
    

    5.1.3 enable_hashjoin

    布尔型
    默认: 
    enable_hashjoin = on
    打开或者关闭查询规划器对散列连接规划类型的使用。
    

    5.1.4 enable_indexscan

    布尔型
    默认: enable_indexscan = on
    打开或者关闭查询规划器对索引扫描规划类型的使用。
    

    5.1.5 enable_indexonlyscan

    布尔型
    默认: enable_indexonlyscan = on
    

    5.1.6 enable_material

    布尔型
    默认: enable_material = on
    

    5.1.7 enable_mergejoin

    布尔型
    默认: enable_mergejoin = on
    打开或者关闭查询规划器对合并连接规划类型的使用。
    

    5.1.8 enable_nestloop

    布尔型
    默认: enable_nestloop = on
    打开或者关闭查询规划器对嵌套循环连接规划类型的使用。
    

    5.1.9 enable_seqscan

    布尔型
    默认: enable_seqscan = on
    打开或者关闭查询规划器对顺序扫描规划类型的使用。
    

    5.1.10 enable_sort

    布尔型
    默认: enable_sort = on
    打开或者关闭查询规划器使用明确的排序步骤。
    

    5.1.11 enable_tidscan

    布尔型
    默认: enable_tidscan = on
    打开或者关闭查询规划器对TID扫描规划类型的使用。
    

    5.2 优化器成本常量 Planner Cost Constants

    优化器用一个正的浮点数来表示不同的查询计划的执行成本,每个基本的数据库操作都会被赋给一个确定的成本常量,优化器根据每个基本操作的执行成本来计算每个查询计划的执行成本。不要轻易地改变下面的参数的值,使用默认值即可。

    5.2.1 seq_page_cost

    浮点数
    默认: seq_page_cost = 1.0
    设置从数据文件上顺序读取一个数据块的执行成本。
    

    5.2.2 random_page_cost

    浮点数
    默认: random_page_cost = 4.0
    设置从数据文件上随机读取一个数据块的执行成本。
    IO很好的机器,不需要考虑离散和顺序扫描的成本差异。
    

    5.2.3 cpu_tuple_cost

    浮点数
    默认: cpu_tuple_cost = 0.01
    设置处理每一个数据行的执行成本。
    

    5.2.4 cpu_index_tuple_cost

    浮点数
    默认: cpu_index_tuple_cost = 0.005
    设置在扫描索引的过程中处理每一个索引项的执行成本。
    

    5.2.5 cpu_operator_cost

    浮点数
    默认: cpu_operator_cost = 0.0025
    设置处理每一个运算符或函数的执行成本。
    

    5.2.6 effective_cache_size

    整数
    默认: effective_cache_size = 4GB
    设置单个查询可以使用的数据缓冲区的大小。
    和shared_buffer等内存无关,只是给优化器生成计划使用的一个假设值。         
    设置稍大,优化器更倾向使用索引扫描而不是顺序扫描,建议设置为可用空闲内存(是指主机物理内存在运行pg时得空闲值)的25%。
    扣掉会话连接RSS,shared buffer, autovacuum worker, 剩下的都是OS可用的CACHE。
    

    parallel_tuple_cost = 0.1

    parallel_setup_cost = 1000.0

    min_parallel_table_scan_size = 8MB

    min_parallel_index_scan_size = 512kB

    5.3 Genetic Query Optimizer

    下列参数控制优化器使用的遗传算法。除非对遗传算法特别了解,一般情况下,使用它们默认值即可。
    

    5.3.1 geqo

    布尔型
    默认: geqo = on
    打开或者关闭遗传优化器。
    

    5.3.2 geqo_threshold

    整数型
    默认: geqo_threshold = 12
    确定使用遗传优化器的查询类型。
    如果FROM子句中引用的的表的数目超过geqo_threshold的值,就会使用遗传优化器。对于简单的查询使用穷举优化器。
    

    5.3.3 geqo_effort

    整数型
    默认: geqo_effort = 5  取值范围:1-10
    控制遗传优化器在生成查询计划需要的时间和查询计划的有效性之间做一个折中。
    值越大,优化器花在选择查询计划的上的时间越长,同时找到一个最优的查询计划的可能性就越大。
    系统通常不直接使用geqo_effort的值,而是使用它的值来计算参数geqo_pool_size和geqo_generations的默认。
    

    5.3.4 geqopoolsize

    整数型
    默认: geqo_pool_size = 0      典型的取值在10和1000之间
    控制遗传优化器的池(pool)大小。
    池大小是遗传群体中的个体数目。
    如果参数的值是0,系统会自动根据geqo_effort的值和查询中引用的表的个数选择一个默认值。
    

    5.3.5 geqo_generations

    整数型
    默认: geqo_generations = 0
    控制遗传优化器的代(generation)的大小。
    代是遗传算法的迭代次数。
    1表示典型的取值范围与池的取值范围相同。
    如果参数的值是0,系统会自动根据geqo_pool_size的值和选择一个默认值。
    

    5.3.6 geqoselectionbias

    浮点数
    默认: geqo_selection_bias = 2.0              取值范围:1.5-2.0
    控制遗传优化器的代选择偏差(selection bias)的大小
    

    5.3.7 geqo_seed = 0.0

    浮点数
    默认: geqo_seed = 0.0      取值范围:0.0-1.0
    

    5.4 Other Planner Options

    5.4.1 default_statistics_target

    整数型
    默认: default_statistics_target = 100     取值范围:1-10000
    注意:PG10的配置文件没有该参数
    设置默认的收集优化器统计数据的目标值。
    它的值越大,ANALYZE操作的执行的时间越长,扫描的数据行的个数也就越多,得到的优化器统计数据就越准确。
    也可以使用命令ALTER TABLE ... ALTER COLUMN ... SET STATISTICS来为表的每个列设置一个单独的统计数据目标值,这个值的作用与参数default_statistics_target是一样,它只影响相关的列的统计数据收集过程。
    

    5.4.2 constraint_exclusion

    字符型
    默认: constraint_exclusion = partition  取值范围:on、off、partition
    如果该参数的值是on,查询优化器将使用表上的约束条件来优化查询。
    如果它的值是off,查询优化器不会使用表上的约束条件来优化查询。
    

    cursor_tuple_fraction = 0.1 # range 0.0-1.0

    from_collapse_limit = 8

    join_collapse_limit = 8 # 1 disables collapsing of explicit JOIN clauses

    force_parallel_mode = off

  • 相关阅读:
    C#调用VC++.net托管库程序集DLL
    SQL Server 2008 评估期已过期解决办法
    TFS2010安装(转)
    将dll添加到GAC(Global Assembly Cache)中
    LINQ to SQL with NOLOCK
    SQL Server 2008创建定期自动备份任务(转)
    问题解决记录(一)
    控制台读入
    数据库
    a标签的onclick与href的执行顺序
  • 原文地址:https://www.cnblogs.com/lykops/p/8263099.html
Copyright © 2011-2022 走看看