Re: Valor del parametro max_locks_per_transaction

From: Emanuel Calvo <3manuek(at)gmail(dot)com>
To: Sergio Sinuco <sergiosinuco(at)datatraffic(dot)com(dot)co>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Valor del parametro max_locks_per_transaction
Date: 2016-08-02 16:50:52
Message-ID: CAJeAsn-gn8xG6zxcaeTUiHFH8RQgELLfaUd0d4DZD=2iFNvDsg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 2 de agosto de 2016, 12:22, Sergio Sinuco <
sergiosinuco(at)datatraffic(dot)com(dot)co> escribió:

Hola a todos.
>
> En la base de datos que tenemos en produccion tenemos el siguiente error
> en el log
>
> 2016-08-01 14:26:34 COT 30621 ERROR: out of shared memory
> 2016-08-01 14:26:34 COT 30621 HINT: You might need to increase
> max_locks_per_transaction.
>
> Una transaccion tipica del sistema ejecuta la funcion *procesamiento*().
> Para verificar el numero de locks que realiza esta transaccion hice lo
> siguiente en una consola de psql
>
> BEGIN;
> SELECT procesamiento();
>
> Verificando entonces en pg_locks y pg_stat_activity encontre que esta
> transaccion realiza 1921 locks de 3 tipos RowExclusiveLock, AccessShareLock
> y RowShareLock.
>
> Tengo varias dudas y agradeceria el consejo que me puedan dar:
>
> - Ahora estamos usando el particionamiento de tablas para dividir
> informacion. Hay una tabla padre y varias tablas hijas. Las tablas hijas
> heredan de la tabla padre y en la tabla padre hay un trigger que decide a
> que hija insertar. Cada tabla hija tiene una llave primaria definida y
> varios indices. Veo que a que pesar de que en teoria solo se inserta en un
> tabla, se hace un lock de tipo RowExclusiveLock en todas las llaves
> primarias de las tablas hijas. Esto deberia ser asi?
>
> Cual es el valor del *constraint_exclusion* ? Puedes compartir el código
del trigger?
Como verificas en que tabla está el dato?

> -
> - Vamos a reducir el numero de tablas hijas. Creo que podriamos
> reducir el numero de locks a aproximadamente 600. Esto quiere decir que el
> parametro max_locks_per_transaction se debe configurar a 600?
>
> No creo que ese sea el problema, claramente el procesamiento está haciendo
más locks de los que debería.
Aumentar en este caso el *max_locks_per_transaction*, solo solucionaría uno
de tus posibles problemas.

Muchas gracias.
>
> --
> Sergio E. Sinuco Leon
> Arquitecto de desarrollo
> Datatraffic S.A.S.
> Móvil: (57) 310 884 26 50
> Fijo (+571) 7426160 Ext 115
> Carrera 47 A No 91 - 91
> Bogotá, Colombia.
> www.datatraffic.com.co
>
> ​
--
--
Emanuel Calvo
3manuek.com

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2016-08-02 17:59:25 Re: Valor del parametro max_locks_per_transaction
Previous Message Sergio Sinuco 2016-08-02 15:22:51 Valor del parametro max_locks_per_transaction