Guideline To Resolve LWLock:SubtransControlLock

2018-08-16 Thread Fred Habash
One of our database API's is run concurrently by near 40 sessions. We see
all of them waiting back and forth on this wait state.

There is one scenario described in some forum where sessions connected a
read-only replica are affected. This does not apply to our use case.

Why is it called Subtrans Control Lock?
What are the common user session scenarios causing this wait?
  - I have read some describe the use of SQL savepoints or PL/pgSQL
exception handling.
What are known resolution measures?



Thank you


Re: Guideline To Resolve LWLock:SubtransControlLock

2018-08-16 Thread Alvaro Herrera
On 2018-Aug-16, Fred Habash wrote:

> One of our database API's is run concurrently by near 40 sessions. We see
> all of them waiting back and forth on this wait state.

What version are you running?

> Why is it called Subtrans Control Lock?

It controls access to the pg_subtrans structure, which is used to record
parent/child transaction relationships (as you say, savepoints and
EXCEPTIONs in plpgsql are the most common uses, but not the only ones).
Normally lookup of these is optimized away, but once you cross a
threshold it cannot any longer.

> What are the common user session scenarios causing this wait?
>   - I have read some describe the use of SQL savepoints or PL/pgSQL
> exception handling.
> What are known resolution measures?

Are you in a position to recompile Postgres?

-- 
Álvaro Herrerahttps://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services