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