Re: consulta triggers y lock

From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: mmiranda(at)americatel(dot)com(dot)sv
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: consulta triggers y lock
Date: 2005-04-26 19:52:19
Message-ID: 20050426195219.GH29362@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Tue, Apr 26, 2005 at 12:03:38PM -0600, mmiranda(at)americatel(dot)com(dot)sv wrote:
> Saludos, alguien podria explicar o enviar algun link con info acerca de los
> "locks" en los datos cuando se corre un trigger, especialemente after
> insert, yo tengo uno y veo que la base de datos se queda esperando (waiting)
> demasiado tiempo, no se si sera algun indice que me hace falta en la tabla o
> algun problema de lock, la tabla tiene como 12 millones de registros, en las
> horas pico se generan muchos inserts simultaneos, estos a su vez disparan el
> trigger que efectua algunos calculos y despues actualiza una columna de la
> tabla, que corresponde a la misma fila que se acaba de insertar, a veces el
> servidor se bloquea durante algunos segundos donde las consultas a la base
> de datos se tardan una infinidad, generalemente esperando que se liberen los
> locks, por eso yo sospecho que es un problema de locks, estoy bien en mis
> sospechas?

Yo diria que no. Dices que vas a actualizar el mismo registro que
genera el disparo del trigger? Entonces es mas facil cambiarlo
directamente en el trigger, modificando el pseudo-registro NEW que es lo
que tiene que retornar el trigger. Ojo que si quieres modificar el
dato, no debes usar un trigger after insert, sino before.

Lo otro que puede ser es que tu trigger quede en un loop. Has probado
poniendo un RAISE NOTICE a ver cuantas veces se ejecuta? Observa que si
haces un trigger que haga una accion que dispare otro trigger, es muy
sencillo entrar en un loop! (me sorprenderia que no fuera un loop
infinito, a menos que tengas mucha suerte)

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"No deja de ser humillante para una persona de ingenio saber
que no hay tonto que no le pueda enseñar algo." (Jean B. Say)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Roberto Cesar Najera 2005-04-26 20:33:44 Re: query concatenar un string
Previous Message Juan Carlos Badillo Goy 2005-04-26 19:36:23 Urgente