[Pgsql-ayuda] Carga de datos masiva

Alvaro Herrera alvherre@dcc.uchile.cl
Fri, 14 Nov 2003 10:04:11 -0300


On Fri, Nov 14, 2003 at 09:41:45AM -0400, Marcelo Retamal Vallejos wrote:

> tengo el siguiente problema, necesito cargar 1.600.000 registros en una
> tabla, que sería la cantidad máxima a cargar de varias cargas de datos,
> sobre una base postgres 7.3.2, en un red hat 9, una máquina PIV de 2.4 GHz,
> 1GB en ram y disco scsi de 70,

Considera que si quieres tener mejor rendimiento puedes usar un RAID 0+1
(o 1+0).  Necesitas mínimo cuatro discos eso sí.  Pero ten en cuenta que
el cuello de botella aquí precisamente es el ancho de banda a los
discos, no la CPU ni la cantidad de memoria.

> Al cargar los datos vía red, es imposible, via archivo texto con COPY
> más índice, el proceso lo mato a los 50 minutos y sin índice 2.9
> minutos.

Y cuanto se demora la creación del índice después que has cargado los
datos?

Puedes aumentar el rendimiento incrementando checkpoint_segments y
sort_mem.  Aumenta también shared_buffers.

>  Pdt: estoy buscando la forma de optimizar los tiempos con tabla sin índices
> y luego creando los índices, lo que demora 3 minutos, pero cuando la tabla
> tenga 5 millones de registros no sé que pasará.

El tiempo de creación del índice aumenta un poco más que linealmente,
pero no mucho más (no, no conozco las ecuaciones en detalle).  Si con
1.6M de registros tarda 3 minutos, con 5M tardará alrededor de 10
minutos ... pero arreglando un poco postgresql.conf puedes mejorar mucho
esto.

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"No hay hombre que no aspire a la plenitud, es decir,
la suma de experiencias de que un hombre es capaz"