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