Re: Inserción de datos lento.

From: "mailproc(at)gmail(dot)com" <mailproc(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Inserción de datos lento.
Date: 2007-12-03 14:31:22
Message-ID: 5aeed73e0712030631m30e04c16q357a6bdb7e5f7ca@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Nov 29, 2007 12:57 PM, Rodriguez Fernando <rodriguez(at)ort(dot)edu(dot)uy> wrote:
> Hola.
> Supongo que "dump_reciente.sql" esta hecho con pg_dump, si es asi porque
> no usas pg_restore?
> Si creas la base y pones el dump tanbien te demora?, si no es asi,
> despues del dump, realiza un vacuumdb -azf.
> Por defecto el postrgres viene con autommit on, no ?
> Que tipo de discos tiene (supongo que para esa configuracion son sata o
> ide de 7200rpm.),
> Sinceramente no se me ocurre nada.mas.

Hola a la lista y a ambos que respondieron la pregunta!

Postgresql tiene activo autocommit, en ambos servidores los discos son
de 7200rpm, el valor de maintenance_work_mem esta comentado y el por
defecto es 16384, el valor por defecto de checkpoint_segments es 3
pero también esta comentado.

El archivo dump_reciente.sql viene de la exportación de datos de una
db en oracle, esta exportación se realizó con Tora, no aparecieron
problemas con las sentencias sql a la hora de insertarlas en posgresql
salvo este problemas de lentitud en uno de los servidores. Sobre la
base de datos del servidor que trabajó bien con la inserción
"dump_reciente.sql" de 450 MB procedí con vuestras sugerencias de usar
sobre ella "pg_dump -F t" y en el otro servidor la operación de
restauración "pg_restore" y ahora si lo hizo muy rápido a diferencia
de psql, estimo que habrá durado tres minutos. Como ya tengo una
solución a medias de todas formas abajo detallo los tiempos de
duración en ambos servidores usando psql, sobre el primer servidor
demoró casi cuatro horas =( mientras que en el otro como 8 minutos, si
conocen alguna manera de solucionar esto estaría agradecido =).

# 1
sh-3.1$ grep "model name" /proc/cpuinfo
model name : Intel(R) Xeon(TM) CPU 3.40GHz
model name : Intel(R) Xeon(TM) CPU 3.40GHz
model name : Intel(R) Xeon(TM) CPU 3.40GHz
model name : Intel(R) Xeon(TM) CPU 3.40GHz
sh-3.1$ uname -sr
Linux 2.6.18-5-686-bigmem
sh-3.1$ free -m
total used free shared buffers cached
Mem: 3044 2776 267 0 120 2045
-/+ buffers/cache: 609 2434
Swap: 6016 118 5897
sh-3.1$ top -b -n 1 | grep Cpu
Cpu(s): 0.5%us, 0.2%sy, 0.1%ni, 95.7%id, 3.5%wa, 0.0%hi, 0.0%si, 0.0%st
sh-3.1$ dropdb dbprueba
DROP DATABASE
sh-3.1$ time createdb dbprueba
CREATE DATABASE

real 0m1.926s
user 0m0.036s
sys 0m0.004s
sh-3.1$ du -sh insert_tablas.sql
112K insert_tablas.sql
sh-3.1$ time psql -o pgsql.log -f insert_tablas.sql -d dbprueba -v
ON_ERROR_STOP=1

real 0m3.436s
user 0m0.048s
sys 0m0.024s
sh-3.1$ du -sh todo-29-11-2007.sql
448M todo-29-11-2007.sql
sh-3.1$ time psql -o pgsql2.log -f todo-29-11-2007.sql -d dbprueba -v
ON_ERROR_STOP=1 2>/dev/null

real 180m56.971s <------
user 1m0.352s
sys 0m37.414s

# 2
sh-3.1$ grep "model name" /proc/cpuinfo
model name : Intel(R) Xeon(R) CPU E5310 @ 1.60GHz
model name : Intel(R) Xeon(R) CPU E5310 @ 1.60GHz
model name : Intel(R) Xeon(R) CPU E5310 @ 1.60GHz
model name : Intel(R) Xeon(R) CPU E5310 @ 1.60GHz
model name : Intel(R) Xeon(R) CPU E5310 @ 1.60GHz
model name : Intel(R) Xeon(R) CPU E5310 @ 1.60GHz
model name : Intel(R) Xeon(R) CPU E5310 @ 1.60GHz
model name : Intel(R) Xeon(R) CPU E5310 @ 1.60GHz
sh-3.1$ uname -sr
Linux 2.6.18-5-686-bigmem
sh-3.1$ free -m
total used free shared buffers cached
Mem: 4053 3644 409 0 38 2865
-/+ buffers/cache: 740 3313
Swap: 6002 293 5708
sh-3.1$ top -b -n 1 | grep Cpu
Cpu(s): 4.9%us, 1.6%sy, 0.5%ni, 92.8%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st
sh-3.1$ dropdb dbprueba
DROP DATABASE
sh-3.1$ time createdb dbprueba
CREATE DATABASE

real 0m0.198s
user 0m0.032s
sys 0m0.004s
sh-3.1$ du -sh insert_tablas.sql
112K insert_tablas.sql
sh-3.1$ time psql -o pgsql.log -f insert_tablas.sql -d dbprueba -v
ON_ERROR_STOP=1

real 0m0.485s
user 0m0.044s
sys 0m0.012s
sh-3.1$ du -sh todo-29-11-2007.sql
448M todo-29-11-2007.sql
sh-3.1$ time psql -o pgsql2.log -f todo-29-11-2007.sql -d dbprueba -v
ON_ERROR_STOP=1 2>/dev/null

real 7m46.851s <------
user 0m39.178s
sys 0m32.674s

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Siciliano, Pablo 2007-12-03 16:00:10 Fw: Consulta BI 2da
Previous Message Rodriguez Fernando 2007-12-03 11:02:44 Re: cantidad de registros devueltos