On Thursday, June 2, 2022, jian he <jian.universal...@gmail.com> wrote:
> > https://www.postgresql.org/docs/current/monitoring-stats. > html#MONITORING-PG-STAT-DATABASE-VIEW > >> xact_commit bigint >> >> Number of transactions in this database that have been committed >> > In https://www.postgresql.org/docs/current/sql-begin.html > > BEGIN initiates a transaction block, that is, all statements after a BEGIN >> command will be executed in a single transaction until an explicit COMMIT >> <https://www.postgresql.org/docs/current/sql-commit.html> or ROLLBACK >> <https://www.postgresql.org/docs/current/sql-rollback.html> is given. By >> default (without BEGIN), PostgreSQL executes transactions in “autocommit” >> mode, that is, each statement is executed in its own transaction and a >> commit is implicitly performed at the end of the statement (if execution >> was successful, otherwise a rollback is done). >> > > I guess the pg_stat_database view column *xact_commit *refers to > 'non-autocommit' transactions? > If so, should we say something like "Number of autocommit > transactions...." > My guess is that it doesn’t matter if it’s implicit or explicit and thus the documentation is correct and adequate. It does seem easy enough to prove one way or the other if you think it might be incorrect and thus to warrant a change to the docs. If it does vary I’d have reason to suspect that a pure select query would exhibit different behavior than an insert or delete query - i.e., whether a new xid is issued makes a difference. I may experiment myself when I’m back at a computer but as you are raising the potential issue the research seems like something that should be done to support the suggestion. It isn’t like this will require source code reading to discern. David J.