Re: es posible acelerar un update?

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Ernesto Quiñones <ernestoq(at)gmail(dot)com>
Cc: ListaPostGres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: es posible acelerar un update?
Date: 2008-01-30 03:33:18
Message-ID: 20080130033318.GD22090@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ernesto Quiñones escribió:

> explain analyze update arc_cuotas set cuo_pagado = 0, cuo_pagado_mora
> = 0 where cuo_estado not in ('C','A');
> QUERY PLAN
> ------------------------------------------------------------------------------------------------------------------------
> Seq Scan on arc_cuotas (cost=0.00..17124.30 rows=192822 width=201)
> (actual time=0.057..34207.650 rows=110930 loops=1)
> Filter: (cuo_estado <> ALL ('{C,A}'::bpchar[]))
> Total runtime: 625348.684 ms
> (3 filas)
>
>
> y este es el explain aplicado solo a pocos registros:
>
> explain analyze update arc_cuotas set cuo_pagado = 0, cuo_pagado_mora
> = 0 where cuo_estado in ('A');
> QUERY PLAN
> --------------------------------------------------------------------------------------------------------------------------------------
> Index Scan using ts_idx_cuotas2 on arc_cuotas (cost=0.00..941.78
> rows=493 width=202) (actual time=15.006..129.776 rows=841 loops=1)
> Index Cond: (cuo_estado = 'A'::bpchar)
> Total runtime: 1288.670 ms

Hmm, si, es bien posible que sean los indices los que hacen lento el
UPDATE. ¿Mediste botando los indices antes de hacer el update?

Aca un experimento rapido me confirma que una tabla con 4 indices toma
el doble de tiempo en un UPDATE masivo que si tiene solo 2, lo cual toma
el doble que si no tiene ninguno. (Los valores no son muy confiables
porque estoy en mi laptop que baja y sube la velocidad de la CPU
dinamicamente).

Si tienes la posibilidad de bloquear la tabla hasta haber completado el
update, esto puede ser lo mas conveniente.

--
Alvaro Herrera http://www.CommandPrompt.com/
lPostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guido Barosio 2008-01-30 03:51:36 Re: El API pgsql en C
Previous Message Alvaro Herrera 2008-01-30 03:11:14 Re: Problema de Performance