Campaign Classicv7 — 数据库模块pg_stat_statements的用途和用法

了解db(数据库)模块的用途和用法 pg_stat_statements 在Adobe Campaign Classic v7中。

描述 description

环境

Adobe Campaign Classic v7 (ACC v7)

问题/症状

  1. 什么是db模块 pg_stat_statements

  2. 为什么客户端请求启用它?

  3. 如何激活它?

解决方法 resolution

  1. pg_stat_statements模块提供了一种方法,用于跟踪服务器执行的所有SQL语句的执行统计信息。

    必须通过添加来加载模块 pg_stat_statementsshared_preload_librariespostgresql.conf,因为它需要额外的共享内存。

    这意味着需要重新启动服务器才能添加或删除模块。

    链接 https://www.postgresql.org/docs/9.4/pgstatstatements.html

  2. 在此表上实施视图类型模式,该模式允许我们监视需要很长时间才能完成的查询。

    这样,客户端将能够调整这些并优化性能。

    此扩展提供有关运行查询的量度:哪些查询最常运行,以及每个查询需要多长时间。

  3. pg_stat_statements

    1. 验证是否已安装postgres版本的正式PostgreSQL参与者包。

      code language-none
      $ dpkg -l | grep postgres
      postgresql-contrib-9.3
      

      如果未安装,请安装。

      code language-none
      $ apt-get install postgresql-contrib-9.3
      
    2. 更改 postgresql.conf 以在启动时预加载模块。

      默认: shared_preload_libraries = ''

      新增: shared_preload_libraries = 'pg_stat_statements'

      如果同时使用两者 pg_stat_statementsauto_explain,使用 用逗号记录和分隔。

      code language-none
      shared_preload_libraries = 'auto_explain,pg_stat_statements'
      
    3. 在要监视的数据库中,执行 CREATE 查询:

      无需创建扩展 auto_explain,仅用于 pg_stat_statements.

      code language-none
      psql
      postgres=# \c mydatabase
      mydatabase=# CREATE EXTENSION pg_stat_statements;
      
    4. 在的自定义OPTIONS部分 postgresql.conf,添加以下行:

      code language-none
      pg_stat_statements.max = 5000
      pg_stat_statements.track = all
      pg_stat_statements.save = on
      
    5. 重新启动postgresql服务。

    示例:获取数据库中开销最大的5个查询。

    code language-none
    SELECT query, calls, total_time, rows, 100.0*shared_blks_hit/nullif(shared_blks_hit+shared_blks_read,0) AS hit_percent
    from pg_stat_statements as s inner join pg_database as d on d.oid = s.dbid
    where d.datname = 'Database_Name'
    order by total_time desc limit 5;
    
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f