Empty query_id in pg_stat_activity

Started by Costa Alexoglouover 1 year ago4 messagesgeneral
Jump to latest
#1Costa Alexoglou
costa@dbtune.com

Hey folks, I am running Benchbase and pgbench at the same time just for
debugging purposes, and I notice that sometimes query_id is missing
from pg_stat_activity. Any clue why this is happening?

```
benchbase=# SELECT query_id, now() - query_start as duration, query FROM
pg_stat_activity WHERE state = 'active' AND backend_type = 'client backend'
ORDER BY duration DESC LIMIT 5; query_id | duration | query
---------------------+------------------+------------------------------------------------------------------------
| 00:00:00.223544 | SELECT + | | s_suppkey, + | | s_name, + | | s_address,
+ | | s_phone, + | | total_revenue + | | FROM + | | supplier, + | |
revenue0 + | | WHERE + | | s_suppkey = supplier_no + | | AND total_revenue
= ( + | | SELECT + | | MAX(total_revenue) + | | FROM + | | revenue0 + | | )
+ | | ORDER BY + | | s_suppkey + | | 3080582906387216276 | 00:00:00.000032
| UPDATE pgbench_branches SET bbalance = bbalance + -4897 WHERE bid = 8;
3080582906387216276 | -00:00:00.000321 | UPDATE pgbench_branches SET
bbalance = bbalance + -377 WHERE bid = 6; 2064869707185898531 |
-00:00:00.000501 | END; 2064869707185898531 | -00:00:00.000502 | END; (5
rows)
```

Cheers,
Costa

#2Erik Wienhold
ewie@ewie.name
In reply to: Costa Alexoglou (#1)
Re: Empty query_id in pg_stat_activity

On 2024-12-06 15:32 +0100, Costa Alexoglou wrote:

Hey folks, I am running Benchbase and pgbench at the same time just for
debugging purposes, and I notice that sometimes query_id is missing
from pg_stat_activity. Any clue why this is happening?

What's your Postgres version?

Could be that query_id is not reported because the session is using the
extended query protocol. This has been fixed just recently in releases
14.14/15.9/16.5/17.1. From the 14.14 release notes:

* Report the active query ID for statistics purposes at the start of
processing of Bind and Execute protocol messages (Sami Imseih)
https://postgr.es/c/b36ee879c

This allows more of the work done in extended query protocol to be
attributed to the correct query.

Another possibility is that the session just disabled compute_query_id:
/messages/by-id/472115375.225506.1683812791906@office.mailbox.org

--
Erik

#3Michael Paquier
michael@paquier.xyz
In reply to: Erik Wienhold (#2)
Re: Empty query_id in pg_stat_activity

On Fri, Dec 06, 2024 at 04:44:29PM +0100, Erik Wienhold wrote:

Another possibility is that the session just disabled compute_query_id:
/messages/by-id/472115375.225506.1683812791906@office.mailbox.org

Or possibly this uses a path where we're not aggressive enough the
query ID while we should know it (there are slight cases where we
could finish without one, like some PL contexts).

If you could provide more details for the reproduction of the problem
that does not involve benchbase, that would save time.
--
Michael

#4Erik Wienhold
ewie@ewie.name
In reply to: Costa Alexoglou (#1)
Re: Empty query_id in pg_stat_activity

On 2024-12-10 14:33 +0100, Costa Alexoglou wrote:

On Fri, Dec 6, 2024 at 4:44 PM Erik Wienhold <ewie@ewie.name> wrote:

What's your Postgres version?

It was `16.1`, run with `16.6` and indeed the query_id is there.

Thanks!

Please reply to list as well. CC'ed it now.

--
Erik