Re: Analizar un proceso aun sin terminar

From: Daymel Bonne Solís <dbonne(at)uci(dot)cu>
To: 8869671(at)im(dot)movistar(dot)com(dot)ec
Cc: Max López Ulloa <maxlopezu(at)gmail(dot)com>, pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Analizar un proceso aun sin terminar
Date: 2011-09-09 04:06:00
Message-ID: 4E6990A8.3050201@uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2011-09-09 12:51:08 Re: Analizar un proceso aun sin terminar
Previous Message Alvaro Herrera 2011-09-09 03:44:31 Re: Analizar un proceso aun sin terminar