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 00:13:11
Message-ID: 20080130001311.GD27546@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ernesto Quiñones escribió:
> Hola amigos
> tengo una tabla de 250k registros, tengo que correrle un update de mas
> o menos 180k registros, el problema es que esta tomando bastante
> tiempo, a veces mas de 15minutos, la tabla pasa por vacumm
> continuamente y no tiene deletes solo procedimientos de insert diarios
> que suben algo de 1000 registros nuevos diariamente

Hmm, 250k registros deberian actualizarse mucho mas rapido que eso.

alvherre=# create table foo (a int);
CREATE TABLE
alvherre=# insert into foo select * from generate_series(1, 250000);
INSERT 0 250000
alvherre=# \timing
Mostrar tiempos está activado.
alvherre=# update foo set a = a + 1;
UPDATE 250000
Duración: 3518,455 ms
alvherre=# vacuum foo;
VACUUM
Duración: 281,051 ms

Quizas tu problema tiene que ver con chequeos de FKs. ¿Tiene alguna FK
la tabla? (En realidad creo que el problema pueden ser otras tablas que
apunten a esta). Prueba un EXPLAIN ANALYZE del update: deberia mostrar
el tiempo usado en revisar esto. Por ej

alvherre=# explain analyze update foo set a = a + 10000000 where a > 200000;
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------
Index Scan using foo_a_key on foo (cost=0.00..5182.19 rows=49640 width=10) (actual time=238.221..2111.175 rows=248000 loops=1)
Index Cond: (a > 200000)
Trigger for constraint bar_a_fkey: time=85402.641 calls=248000
Total runtime: 97699.408 ms
(4 filas)

Ojo, hazlo en una transaccion y luego haz ROLLBACK, porque las acciones
del UPDATE son ejecutadas.

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Manu 2008-01-30 00:26:30 Nuevo en el foro
Previous Message Henrry Joshney Servitá Sánchez 2008-01-30 00:01:06 comandos en postgresql