Обсуждение: [SQL] commit not completing - how to investigate?

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

[SQL] commit not completing - how to investigate?

От
Tim Dudgeon
Дата:
I have a situation where the pg_stat_activity view shows that can have 
some processes that are idle and not completing. In some cases the 
statement being executed is COMMIT.

How can I investigate WHY these processes are not completing. Presumably 
they are waiting on something, but I'm not sure how to work out what 
this is.

Thanks
Tim




Re: [SQL] commit not completing - how to investigate?

От
Tom Lane
Дата:
Tim Dudgeon <tdudgeon.ml@gmail.com> writes:
> I have a situation where the pg_stat_activity view shows that can have 
> some processes that are idle and not completing. In some cases the 
> statement being executed is COMMIT.

Are you sure you're interpreting the view properly?  If the session
state is shown as idle, it's idle.  We used to show the query field
as empty in that case, but recent PG versions allow the query field
to continue to show the last-completed command.
        regards, tom lane



Re: [SQL] commit not completing - how to investigate?

От
Tim Dudgeon
Дата:
Maybe I'm not interpreting it correctly.
I was assuming that if the view reported a row then that row was still 
"happening".
Yes, the state is "idle", and the command is "COMMIT".
But if the COMMIT has completed then the process should finish and the 
row not be present?

So is what you are suggesting that in my case I'm using a connection 
pool, and the COMMIT has completed successfully, the connection released 
back to the pool, but not yet closed, so that process is still running?

Tim


On 21/07/2017 15:14, Tom Lane wrote:
> Tim Dudgeon <tdudgeon.ml@gmail.com> writes:
>> I have a situation where the pg_stat_activity view shows that can have
>> some processes that are idle and not completing. In some cases the
>> statement being executed is COMMIT.
> Are you sure you're interpreting the view properly?  If the session
> state is shown as idle, it's idle.  We used to show the query field
> as empty in that case, but recent PG versions allow the query field
> to continue to show the last-completed command.
>
>             regards, tom lane




Re: [SQL] commit not completing - how to investigate?

От
Tom Lane
Дата:
Tim Dudgeon <tdudgeon.ml@gmail.com> writes:
> Yes, the state is "idle", and the command is "COMMIT".
> But if the COMMIT has completed then the process should finish and the 
> row not be present?

Well, that's up to the connected client whether it's going to terminate
the session or not.

> So is what you are suggesting that in my case I'm using a connection 
> pool, and the COMMIT has completed successfully, the connection released 
> back to the pool, but not yet closed, so that process is still running?

That's sort of the point of a connection pooler, to re-use database
sessions rather than establishing new ones all the time.  But the
database doesn't know that a pooler is in use; it just sees a client
connection that's not doing anything right now.
        regards, tom lane