帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:EXEC  STA  State  EXE  STAT  
filter statements by their execution plans.

  • 源代码名称:pg_plan_filter
  • 源代码网址:http://www.github.com/pgexperts/pg_plan_filter
  • pg_plan_filter源代码文档
  • pg_plan_filter源代码下载
  • Git URL:
    git://www.github.com/pgexperts/pg_plan_filter.git
  • Git Clone代码到本地:
    git clone http://www.github.com/pgexperts/pg_plan_filter
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/pgexperts/pg_plan_filter
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • 面向PostgreSQL的计划过滤模块

    这个可以加载模块将在执行前针对特定配置的标准测试语句,如果违反了标准,则会产生错误。 这允许管理员防止在生产数据库中执行某些查询。

    目前唯一支持的标准是语句计划所允许的最大估计成本。 然而,pg_plan_filter 可以扩展为支持许多不同的过滤器。

    模块通过 LOAD 语句加载,或者通过 postgresql.conf 文件中的shared_preload_libraries 设置加载。 推荐使用后一种机制- LOAD 仅在开发或者测试期间使用。

    此外,必须指定 statement_cost_limit。 默认限制为 0,这意味着不应用任何筛选器。 因此,postgresql.conf 文件中的典型设置可能是:

    shared_preload_libraries = 'plan_filter'
    plan_filter.statement_cost_limit = 100000.0

    ļimit_select_only 限制筛选以只选择语句。 默认值为 false。

    plan_filter.limit_select_only = true

    打开它请注意选择!= 只读,因为SELECT语句还可能会修改数据。

    如果在 9.2之前使用这个sql版本,你还需要在以上行之前有一行像这样:

    custom_variable_classes = 'plan_filter'

    当这个模块使用非零 statement_cost_limit 运行时,它也会阻止 EXPLAIN 在昂贵的查询上运行。 解决方案将临时 set statement_cost_limit 到 0,然后运行 EXPLAIN,如下所示:

    BEGIN;
    SET LOCAL plan_filter.statement_cost_limit = 0;
    EXPLAIN select.. ..;
    COMMIT;

    其他设置一样,plan_filter.statement_cost_limit 可以设置为每个用户以覆盖默认值和在 postgresql.conf 中设置的。 要执行这里操作,请执行以下操作:

    ALTER USER can_run_expensive SET plan_filter.statement_cost_limit = 0;
    ALTER USER only_cheap_queries SET plan_filter.statement_cost_limit = 10000;

    建筑和安装

    无需配置可以像这样实现构建和安装:

    export PATH=/path/to/pgconfig/directory:$PATH
    make && make install

    由于 pg_plan_filter 是可以加载模块而不是扩展,因此不能使用PGXN或者其他扩展管理工具安装它。

    模块已经在 9.1.14.9.3.6和 9.4.1上进行了测试。 它应该在任何版本 9.0或者更高版本上工作,但在每个版本中都没有测试。

    警告

    statement_cost_limit 将根据它的预计成本取消计划。 PostgreSQL计划程序可以并且确实返回与实际查询执行时间无关的成本估算值。 因此,如果使用 pg_plan_filter,应该准备取消"false 正"取消,并且应该慷慨地设置 statement_cost_limit

    Credits

    模块主要是 Andrew Dunstan的工作,来自PostgreSQL专家公司的支持。 员工。

    模块的开发由 Twitch.TV 公司赞助。



    文章标签:STA  STAT  EXE  State  EXEC  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语