El 08/09/11 21:11, Max López Ulloa escribió:
Estimados,
Hoy se me creo un problema con un procedimiento que actua en una tabla
"x", llamo una función de inserción la cual hace insert o update
dependiendo si existe o no el registro, lleva 2 años en funcionamiento
el sistema, pero desde ayer tiene un comportamiento extraño.
Llega un punto en que el proceso se detiene así sea en eliminacion,
insercion o actualizacion, pero solo de esa función ya que el editor
sigue funcionando y puedo hacer el resto de consultas a esa misma
tabla u otras tablas; la tabla solo 26000 registros.
Viendo el "server status" de postgres veo que la el procedimiento esta
"esperando" (waiting), en otras palabras la base no suelta el
procedimiento porque aun no termina de ejecutar la tarea.
He hecho de todo reindexacion, vacuum, e incluso copie la base entera
con otro nombre y redireccioné la aplicación a la nueva base, solo me
toca cambiar de servidor pero creo que sería el ultimo recurso.
Mi pregunta es, como puedo ver exactamente que esta haciendo postgres
que se detiene y no termina, ya que haciendo un debug al procedimiento
puedo ver que la funcion continua paso a paso pero dentro hay
"delete", "insert" y "update" que no puedo ver si se hacen.
Gracias por la ayuda.
--
Max Lopez U.
SELECT
w.current_query as waiting_query,
w.procpid as w_pid,
w.usename as w_user,
l.current_query as locking_query,
l.procpid as l_pid,
l.usename as l_user,
t.schemaname || '.' || t.relname as tablename
from pg_stat_activity w
join pg_locks l1 on w.procpid = l1.pid and not l1.granted
join pg_locks l2 on l1.relation = l2.relation and l2.granted
join pg_stat_activity l on l2.pid = l.procpid
join pg_stat_user_tables t on l1.relation = t.relid
where w.waiting;
Esta consulta devuelve el ID del proceso, usuario, consulta que
bloqueada y la que bloquea, y el esquema y tabla que causa el bloqueo.
Saludos, Bonne
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda