UPdate Lento

From: marcosrios(at)planet(dot)com(dot)pe
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: UPdate Lento
Date: 2012-06-12 19:42:42
Message-ID: 20120612144242.61193ttfyyky6dic@webmail.planet.com.pe
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Estimada Lista,

Tengo un problema con PostgreSQL, desde el día de ayer. Tengo 4 bases
de datos que en principio estuvieron corriendo sobre la versión 8.3 en
windows 2003 server, sin problemas desde hace poco mas de 3 años.

Sin embargo, luego de agregar una nueva base de datos, se presentaron
problemas al momento de actualizar saldos y grabar movimientos en 3
tablas.

Tengo una función que realiza esta tarea (actualzar saldos x articulo,
grabar movimientos y actualizar lotes disponibles x articulo).

Por cada pedido realizado, llamo a esta función para que actualice3
tablas. Antes de ayer, este proceso no demoraba ni dos segundos en
procesar. Ahora demora demasiado (6'500,000ms) y aun no termina de
procesar 2305 registros.

He instalado la ultima versión de PostgreSQL y he levantado las BDs
sin problema, puedo consultar cualquier tabla de forma normal, pero no
puedo procesar ninguna actualización sobre éstas.

Tengo un servidor HP ML150 con disco sata de 500GB memoria de 4GB y
porcesador Xeon de 4 nucleos. Todo corriendo sobre Windows 2003 server.

El código que ejecuto es:
-------------------------
FOR reg_pedidos IN SELECT
a.cod_producto
, a.cantidad
, b.fecha_emision
FROM
detalle_pedidos a
, pedidos b
WHERE a.empresa = v_empresa
AND a.sucursal = v_sucursal
AND a.pedido = v_interno
AND a.procesado
AND NOT a.anulado
AND b.empresa = a.empresa
AND b.sucursal = a.sucursal
AND b.pedido = a.pedido
LOOP
RAISE NOTICE 'Producto > %',reg_pedidos.cod_producto;
RAISE NOTICE 'Actualizando saldos_online';
UPDATE saldos_online
SET saldo_apto = saldo_apto - reg_pedidos.cantidad,
ultima_salida = reg_pedidos.cantidad
WHERE empresa = v_empresa
AND sucursal = v_sucursal
AND cod_producto = reg_pedidos.cod_producto;
RAISE NOTICE 'Actualizando detalle_pedidos';
UPDATE detalle_pedidos
SET procesado = false
WHERE empresa = v_empresa
AND sucursal = v_sucursal
AND pedido = v_interno
AND cod_producto = reg_pedidos.cod_producto;
RAISE NOTICE 'Actualizando pedidos';
UPDATE pedidos
SET procesado = false
WHERE empresa = v_empresa
AND sucursal = v_sucursal
AND pedido = v_interno;
RAISE NOTICE 'Anulando movi_prod';
UPDATE movi_prod
SET anulado = true
WHERE empresa = v_empresa
AND sucursal = v_sucursal
AND tipo_doc = 90
AND serie_doc = 1
AND numero_doc = v_interno;
RAISE NOTICE 'Actualizar vencimientos';
FOR reg_lotes IN SELECT
a.lote
, a.vencimiento
, a.cantidad
FROM
mov_vencimientos a
WHERE a.empresa = v_empresa
AND a.sucursal = v_sucursal
AND a.cod_movimiento = v_movimiento
AND a.pedido = v_interno
AND a.cod_producto = reg_pedidos.cod_producto
LOOP
UPDATE vencimientos
SET saldo_final_apto = saldo_final_apto - reg_lotes.cantidad
WHERE empresa = v_empresa
AND sucursal = v_sucursal
AND cod_producto = reg_pedidos.cod_producto
AND vencimiento = reg_lotes.vencimiento
AND lote = reg_lotes.lote;
END LOOP;
DELETE FROM mov_vencimientos
WHERE empresa = v_empresa
AND sucursal = v_sucursal
AND cod_movimiento = v_movimiento
AND pedido = v_interno;
END LOOP;
-----------------------

Por favor, que información debo proporcionarles para que me puedan
orientar y corregir este problema.

Desde ya les agradezco por su atención a la presente.

Saludos,

Marcos Ríos Rodríguez
Arequipa-Perú.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2012-06-12 19:56:28 Re: UPdate Lento
Previous Message Alvaro Herrera 2012-06-12 19:20:24 Re: Caida de postgres