Re: Out of memory (Failed on request of size 212).

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Ricardo Arcos <rarcos(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Out of memory (Failed on request of size 212).
Date: 2007-08-03 23:24:19
Message-ID: 20070803232419.GF20254@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Ricardo!

(Seras el mismo Ricardo Arcos que yo conozco o es un alcance de nombre?)

Ricardo Arcos escribió:
> Hola, he estado durante varias horas tratando de entender y resolver
> este problema, pero no he encontrado solución. He intentado cambiando
> los parámetros de uso de memoria y recreando los índices de la tabla
> involucrada en la consulta (he visto en otras listas de correo que la
> corrupción en los datos puede provocar errores como este).
>
> El servidor tiene un CPU Xeon 5510, 4 GB de RAM y un disco SCSI de 300
> GB y 10000 RPM. Está corriendo PostgreSQL 8.1.3.
>
> La consulta es la siguiente:
>
> CREATE TABLE
> "Bryc_TMP_BDM"."SP_P_VentasFactLI5_tmpPeriodo_4" AS
> SELECT
> [...]
> FROM
> "Bryc_TMP_BDM"."FP_VentasFactLI5" T1
> WHERE
> T1.peri_id BETWEEN 1 AND 4
> GROUP BY
> T1.cli_id, T1.cat_id, T1.sucu_id

El problema es que esta haciendo un HashAggregate, pero estima muy mal
la cantidad de grupos que se van a generar -- normalmente haria hashagg
solo si la tabla de hash cupiera en work_mem, pero cuando las
estadisticas sobre la tabla que estas consultando estan muy malas,
entonces puede intentar hacer el hashagg y luego encontrarse con que la
tabla de hash crece demasiado.

Prueba haciendo un ANALYZE a la tabla
Bryc_TMP_BDM.FP_VentasFactLI5. Luego examina el EXPLAIN de nuevo --
deberia cambiar el nodo HashAggregate por otra cosa. Si no lo hace,
aumenta las estadisticas para esa tabla (ALTER TABLE ... SET
STATISTICS), luego ANALYZE otra vez, y prueba de nuevo.

Otro problema puede ser que work_mem sea demasiado alto. No lo aumentes
demasiado! (en tu caso, mas de 100 MB ya es probablemente demasiado).

Aca se pueden ver los contextos de memoria que crecieron demasiado:

> AggContext: -1738547200 total in 322 blocks; 27768 free (313 chunks);
> -1738574968 used
> TupleHashTable: 486662168 total in 68 blocks; 1281968 free (203
> chunks); 485380200 used

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Dilm E.I.R.L 2007-08-04 00:58:41 Rv: Nuevo en PostgreSQL
Previous Message Ricardo Arcos 2007-08-03 22:58:11 Out of memory (Failed on request of size 212).