>> On Sep 21, 2022, at 9:32 AM, Dirschel, Steve >> <steve.dirsc...@thomsonreuters.com> wrote: >> >> On Wed, 2022-09-21 at 14:11 +0000, Dirschel, Steve wrote: >>>> We are troubleshooting an issue where autovacuum is not cleaning up a >>>> table. >>>> The application using this database runs with autocommit turned off. >>>> We can see in pg_stat_activity lots of sessions “idle in transaction” >>>> even though those sessions have not executed any DML- they have >>>> executed selects but no DML. The database’s isolation level is set to >>>> read committed. >> >>> "backend_xmin" is set when the session has an active snapshot. Such a >>> snapshot is held for the whole duration of a transaction in the REPEATABLE >>> READ isolation level, but there are cases where you can see that in READ >>> COMMITTED isolation level > as well: >>> >>> - if there is a long running query >>> >>> - if there is a cursor open >>> >>> Perhaps you could ask your developers if they have long running read-only >>> transactions with cursors. >>> >>> Yours, >>> Laurenz Albe >> >> Thanks for the reply Laurenz. For an application session in this "state" >> pg_stat_activity shows the state of "idle in transaction" and backend_xmin >> is populated. The query shows the last select query it ran. It is not >> currently executing a query. And dev has said they are not using a cursor >> for the query. So it does not appear they have long running read-only >> transactions with cursors. >> >> Outside that scenario can you think of any others where a session: >> 1. Login to the database >> 2. Set autocommit off >> 3. Run select query, query completes, session does nothing after that query >> completes. >> 4. transaction isolation level is read committed >> >> That session sitting there idle in transaction has backend_xmin populated. >> When I run that test backend_xmin does not get populated unless I set my >> transaction isolation level to repeatable read. We have enabled statement >> logging so we can see if their sessions are changing that transaction >> isolation level behind the scenes that they are not aware of but so far we >> have not seen that type of command logged. >> >> Regards >> Steve > >What stack is the application using? Anything like Spring or Hibernate >involved?
Java is the stack. Thanks