compute_query_id

启用查询标识符的服务器参数

compute_query_id 是一个 配置参数,它启用查询标识符的计算,可以通过 pg_stat_activity 显示,在 EXPLAIN 输出或日志输出中显示,如果在 log_line_prefix 中配置。

compute_query_idPostgreSQL 14 中添加。

默认值

compute_query_id 的默认值为:auto

用法

PostgreSQL 13 及更早版本中,contrib 模块 pg_stat_statements 为规范化查询生成查询标识符,这使得即使查询值和/或查询格式存在差异,也能跟踪本质上相同的查询。从 PostgreSQL 14 开始,此值在 PostgreSQL 核心进行计算,使其可在其他上下文中使用;具体来说

请注意,查询 ID 值可以为负数。

按 PostgreSQL 版本分列的详细信息

compute_query_id (PostgreSQL 17)

设置 auto
单位  
类别 统计/监控
简短描述 启用内核中查询标识符的计算。
额外描述  
上下文 超级用户
变量类型 枚举
来源 默认
最小值  
最大值  
枚举值 auto, regress, on, off
启动值 auto
重置值 auto
源文件  
源代码行  
待重启 false

文档: compute_query_id

compute_query_id (PostgreSQL 16)

设置 auto
单位  
类别 统计/监控
简短描述 启用内核中查询标识符的计算。
额外描述  
上下文 超级用户
变量类型 枚举
来源 默认
最小值  
最大值  
枚举值 auto, regress, on, off
启动值 auto
重置值 auto
源文件  
源代码行  
待重启 false

文档: compute_query_id

compute_query_id (PostgreSQL 15)

设置 auto
单位  
类别 统计/监控
简短描述 启用内核中查询标识符的计算。
额外描述  
上下文 超级用户
变量类型 枚举
来源 默认
最小值  
最大值  
枚举值 auto, regress, on, off
启动值 auto
重置值 auto
源文件  
源代码行  
待重启 false

文档: compute_query_id

compute_query_id (PostgreSQL 14)

设置 auto
单位  
类别 统计/监控
简短描述 计算查询标识符。
额外描述  
上下文 超级用户
变量类型 枚举
来源 默认
最小值  
最大值  
枚举值 auto, regress, on, off
启动值 auto
重置值 auto
源文件  
源代码行  
待重启 false

文档: compute_query_id

变更历史

示例

pg_stat_activity 中显示查询 ID

postgres=# SELECT datid, datname, query_id, substr(query,1,64) AS query
             FROM pg_stat_activity WHERE datid IS NOT NULL;
 datid | datname  |       query_id       |                              query                               
-------+----------+----------------------+------------------------------------------------------------------
 16403 | postgres |  8528657101864406127 | SELECT datid, datname, query_id, substr(query,1,64) AS query FRO
 16402 | appdb    |  5295917891061644709 | /* getAllLanguages_r */                                         +
       |          |                      |   SELECT *                                                      +
       |          |                      |     FROM language                                               +
       |          |                      | ORDER BY la
 16402 | appdb    | -6420466229898021482 | /* ObjectLib::_getObjectInfoForLink */                          +
       |          |                      |     SELECT o.object_id,                                         +
       |          |                      |  
 16402 | appdb    |  5295917891061644709 | /* getAllLanguages_r */                                         +
       |          |                      |   SELECT *                                                      +
       |          |                      |     FROM language                                               +
       |          |                      | ORDER BY la
(4 rows)

在日志文件中显示查询 ID(将 log_line_prefix 设置为 '%m [%p; %Q]'

2021-07-21 09:46:50.810 UTC [2658840; -2049453941623996126] LOG:  duration: 0.067 ms
2021-07-21 09:46:50.810 UTC [2658840; 3422818749220588372] LOG:  duration: 0.056 ms
2021-07-21 09:46:50.810 UTC [2658840; -2269355413466007673] LOG:  duration: 0.103 ms
2021-07-21 09:46:50.811 UTC [2658840; -2049453941623996126] LOG:  duration: 0.063 ms
2021-07-21 09:46:50.811 UTC [2658840; 3422818749220588372] LOG:  duration: 0.059 ms
2021-07-21 09:46:50.811 UTC [2658840; 1878833853774024825] LOG:  duration: 0.107 ms
2021-07-21 09:46:50.811 UTC [2658840; -2049453941623996126] LOG:  duration: 0.061 ms
2021-07-22 09:46:50.812 UTC [2658840; 5295917891061644709] LOG:  duration: 0.154 ms

如果安装了 pg_stat_statements,则可以将查询 ID 与 pg_stat_statements 视图中的条目匹配

postgres=# SELECT userid, dbid, query FROM pg_stat_statements WHERE queryid=-2269355413466007673;
 userid | dbid  |          query           
--------+-------+--------------------------
  16384 | 16402 | /* getSessionMessage */ +
        |       |     SELECT warning      +
        |       |       FROM user_session +
        |       |      WHERE session_id=$1
(1 row)

EXPLAIN VERBOSE 也会发出查询 ID

appdb=> EXPLAIN VERBOSE
          SELECT warning FROM user_session 
           WHERE session_id='2c7fe5d06fd9d6c0cc08883355c962b1';
                                         QUERY PLAN                                         
--------------------------------------------------------------------------------------------
 Index Scan using user_session_pkey on epp.user_session  (cost=0.28..8.29 rows=1 width=32)
   Output: warning
   Index Cond: ((user_session.session_id)::text = '2c7fe5d06fd9d6c0cc08883355c962b1'::text)
 Query Identifier: -2269355413466007673
(4 rows)

分类

GUC 配置项

另请参阅

pg_stat_activityEXPLAINpg_stat_statements

反馈

提交任何关于 "compute_query_id" 的评论、建议或更正 此处