Re: compute_query_id - Mailing list pgsql-general

From Julien Rouhaud
Subject Re: compute_query_id
Date
Msg-id 20210617145026.ypll3a5iryjbks2h@nol
Whole thread Raw
In response to compute_query_id  (Vijaykumar Jain <vijaykumarjain.github@gmail.com>)
Responses Re: compute_query_id  (Vijaykumar Jain <vijaykumarjain.github@gmail.com>)
List pgsql-general
On Thu, Jun 17, 2021 at 08:09:54PM +0530, Vijaykumar Jain wrote:
> how is the compute_query_id actually calculated?

It's the exact same implementation that was extracted from pg_stat_statements.
You have some implementation details at
https://www.postgresql.org/docs/current/pgstatstatements.html.

> why does it show 0 in logs for random sql queries.
> log_line_prefix = '%Q :'
> 0 :LOG:  statement: select * from pg_stat_activity;

It means that you haven't enabled it:

2021-06-17 22:46:16.231 CST [11246] queryid=0 LOG:  duration: 4.971 ms  statement: select * from pg_stat_activity ;
2021-06-17 22:46:25.383 CST [11246] queryid=0 LOG:  duration: 0.284 ms  statement: set compute_query_id = on;
2021-06-17 22:46:28.744 CST [11246] queryid=941978042436931562 LOG:  duration: 1.725 ms  statement: select * from
pg_stat_activity;
 

> i mean pid already was doing the job to identify the query and its children
> even it logs,
> but i know pid will get recycled.

I'm not sure that I understand that question.  The pid will identify a backend,
and that backend can execute 0, 1 or a lot of different queries.  The query_id
will uniquely identify statements after some normalization and removing the
constant parts (so for instance "select 1;" and "Select 2  ;" will have the
same identifier).  Having only that information in the log can be useful on its
own, but you usually get way more benefit using additional modules like
pg_stat_statements.



pgsql-general by date:

Previous
From: Vijaykumar Jain
Date:
Subject: compute_query_id
Next
From: Vijaykumar Jain
Date:
Subject: Re: compute_query_id