Re: funcionamiento de temp_buffer

From: Francisco Olarte <folarte(at)peoplecall(dot)com>
To: "jvenegasperu (dot)" <jvenegasperu(at)gmail(dot)com>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: funcionamiento de temp_buffer
Date: 2016-07-10 15:59:19
Message-ID: CA+bJJbz+sswDZ2CsrDUHyLsWzEhYFcunqjdzmTCots5R7-sh7g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenos dias..

2016-07-10 17:41 GMT+02:00 jvenegasperu . <jvenegasperu(at)gmail(dot)com>:
...
> ¿La sesion de base de datos se considera al total del codigo dentro de la
> función? es decir si tengo 3 tablas temporales y cada una usa por ejemplo 2
> Megas y asigno un temp_buffer de 10 megas aun tendria 4 megas para usar
> dentro de la función?

La sesion es todo lo que haces desde que conectas hasta que
desconectas. Vamos, un backend.

> ¿Pienso que el temp_buffer es por cada tabla temporal creada entonces en mi
> caso tengo asignado temp_buffer a 10 megas y tengo dentro de la función 3
> tablas temporales estaria usando 30 Megas?

La documentacion parece indicar lo contrario: "Sets the maximum number
of temporary buffers used by each database session....A **session**
will allocate temporary buffers as needed up to the limit given by
temp_buffers...."

Vamos, que es la sesion, no la tabla temporal.

> ¿Que pasa si la tabla origen para formar la tabla temporal pesa mas de los
> 10 Megas asignados? entonces ya no se estaria usando el temp_buffer en la
> RAM sino un espacio en disco duro?

Probablemente. Recurda que tu disco tiene cache tambien. De todas
maneras no es bueno pensar en las tablas temporales como "tablas en
disco ram", te puedes llevar sorpresas con estas cosas.

> ¿y finalmente en el caso del join cuando espacio necesitaria el temp_buffer?
> la suma del espacio de las dos tablas o solo el espacio necesario para
> almacenar temporalmente el resultado de las dos tablas?

Depende. Que hay en t1 y t2? Es id unico? existen todos los pares? Ten
en cuenta que con un t1,t2 de 100 registros cada una tu ejemplo puede
producir de 0 a 10000 registros en t3 con lo que has mostrado. De
todas maneras necesitaras espacio para materializar el join del create
table, ya que el server no sabe que vas a hacer con el resultado (
igual te lias a hacer updates random en el, y necesitas todas las
filas ).

Francisco Olarte.

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2016-07-10 18:35:10 Re: funcionamiento de temp_buffer
Previous Message jvenegasperu . 2016-07-10 15:41:11 funcionamiento de temp_buffer