Re: UPdate Lento

From: SYSWARP - Carlos Enrique Perez <carlos(dot)perez(at)syswarp(dot)com(dot)ar>
To: marcosrios(at)planet(dot)com(dot)pe
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: UPdate Lento
Date: 2012-06-12 20:01:49
Message-ID: 1339531309.1937.40.camel@perezc-desktop
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

creo que si no cambiaste nada como triggers e indices deberias pensar en
que cambio algun plan de ejecucion de la consulta.
De ser asi tendrias que hacer un explain plan y verificar si podes
agregar algun indice o cambiar algo en la consulta que mejore su
performance.
saludos.

El mar, 12-06-2012 a las 14:42 -0500, marcosrios(at)planet(dot)com(dot)pe escribió:

> 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ú.
>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2012-06-12 22:55:24 Re: UPdate Lento
Previous Message Alvaro Herrera 2012-06-12 19:56:28 Re: UPdate Lento