]> granicus.if.org Git - pgbouncer/commit
Track separate stats for queries and transactions
authorTomas Vondra <tomas.vondra@2ndquadrant.com>
Wed, 20 Sep 2017 19:00:17 +0000 (21:00 +0200)
committerTomas Vondra <tomas.vondra@2ndquadrant.com>
Sun, 24 Sep 2017 16:16:55 +0000 (18:16 +0200)
commit876d8a5379e99ca385bb288eac03683717c423d1
tree06fd608271ef2e3f6bd72cc360c6ce46a80ef1a8
parent9da4c4dfaa21bbea2ce8706aa57767d36827a3fc
Track separate stats for queries and transactions

The documentation claimed avg_query tracks average query duration,
but it was only updated when switching into 'idle' state. So in
transaction or session pooling modes, it was actually the duration
of the whole transaction, including 'idle in transaction' time and
time spen executing (multiple) queries.

This was causing confusion, e.g. when the application was keeping
transactions open without executing any queries. In that case the
avg_query metric was increasing although the database was handling
queries just fine (without any slow-down).

Instead of just fixing the avg_query metric, it seems quite useful
to have timing data both for queries and transactions. So this
patch replaces

 - total_query_time
 - avg_query

with

 - total_xact_time
 - total_query_time
 - avg_xact_time
 - avg_query_time

This is also related to the definition of 'request' which was used
to compute the avg_query, and so it equal to a transaction. This
patch replaces the counter with two - one for transactions and one
for queries. As we also computed avg_req, the patch replaces

 - total_requests
 - avg_req

with

 - total_xact_count
 - total_query_time
 - avg_xact_count
 - avg_query_count

Note: This is likely to affect monitoring solutions, as the column
names in SHOW STATS change.
doc/usage.rst
include/bouncer.h
src/client.c
src/server.c
src/stats.c