Обсуждение: increase of xact_commit vs txid_current

Поиск
Список
Период
Сортировка

increase of xact_commit vs txid_current

От
reg_pg_stefanz@perfexpert.ch
Дата:
Hi,

I am confused, the documentation says for pg_stat_database
    xact_commit      Number of transactions in this database that have 
been committed
and somewhere else
     txid_current()    get current transaction ID, assigning a new one 
if the current transaction does not have one

I would have naively expected txid_current() be more or less in line 
with xact_commit,  or  increasing faster as txid_current() should be 
global but xact_commit is per database.

However xact_commit seems to increases faster than txid_current(),  what 
am I missing? Are there commits that do not increase the xid number?

Thanks
Stefan




Re: increase of xact_commit vs txid_current

От
Julien Rouhaud
Дата:
On Thu, May 7, 2020 at 7:01 PM <reg_pg_stefanz@perfexpert.ch> wrote:
>
> Hi,
>
> I am confused, the documentation says for pg_stat_database
>     xact_commit      Number of transactions in this database that have
> been committed
> and somewhere else
>      txid_current()    get current transaction ID, assigning a new one
> if the current transaction does not have one
>
> I would have naively expected txid_current() be more or less in line
> with xact_commit,  or  increasing faster as txid_current() should be
> global but xact_commit is per database.
>
> However xact_commit seems to increases faster than txid_current(),  what
> am I missing? Are there commits that do not increase the xid number?

Indeed, read-only transactions usually don't consume a transaction id,
to avoid the need to perform a FREEZE too often.  Note that pcalling
txid_current() will consume such a transaction id, even in a read only
query.