>> 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

Reply via email to