Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group