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.
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 |