[Pgsql-ayuda] [csepulveda@atichile.com: Consulta por Performance]

Alvaro Herrera alvherre@dcc.uchile.cl
Mon, 19 Jan 2004 19:26:05 -0300


On Mon, Jan 19, 2004 at 05:34:21PM -0300, Alvaro Herrera wrote:

> Mi problema es que tengo una funcion que entre otras cosas hace lo
> descrito arriba para llevar datos de una tabla a otra.  Son aprox.
> 220.000 registros los que debieran insertarse, pero se esta demorando
> demasiado tiempo (en tres horas no ha insertado aun 100.000 registros).

¿Hay llaves foraneas?  ¿Indices?  ¿"Disparadores pospuestos"? (deferred
triggers) ¿Cual es la definicion de la tabla?  ¿Versión de Postgres?

He visto un problema similar reportado un par de veces.  La idea es que
el tiempo de insertar un registro aumenta a medida que hay mas registros
en la tabla.  No recuerdo cual era la solucion.  Quizas tenga que ver
con lo que pregunto más arriba.  Podrias probar haciendo ANALYZE de la
tabla a medida que el proceso avanza.  O quizas podrias botar todos los
indices de la tabla, insertar todo y recrear los indices.

Si el problema es que insertar una tupla es >> O(1), deberias buscar la
explicacion en otra parte.

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"Nadie esta tan esclavizado como el que se cree libre no siendolo" (Goethe)