Re: Sobre hilos en Postgres

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: moises <moises(at)cedaivc(dot)co(dot)cu>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Sobre hilos en Postgres
Date: 2006-07-31 21:55:06
Message-ID: 20060731215506.GQ20962@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

moises escribió:

> 1- He leído en los manuales de postgres que dos hilos no pueden
> compartir la misma conexión para hacer transacciones diferentes. Esto quiere
> decir que en una misma conexión sólo puedo efectuar una sola transacción,
> para hacer varias transacciones en paralelo debo crear otra nueva conexión?.

Vamos a ver. Primero que nada debes saber que Postgres usa un modelo
multiproceso, no multihilo. Cada conexion tiene su propio proceso desde
el punto de vista del servidor, obtenido desde el postmaster mediante un
fork().

El comentario sobre los hilos tiene que ver con que tu puedes usar un
programa cliente multihilo. Si uno de los hilos abre una conexion a
Postgres, entonces esa conexion debe usarse por solamente un hilo en un
momento dado: enviar una consulta y extraer todos los resultados que la
consulta retorna, hasta obtener el mensaje final de "ready for query".
Si tu envias una consulta en un hilo, y luego en otro hilo envias otra
consulta, entonces el protocolo se desincroniza y la conexion queda en
un estado inusable.

Para hacer varias conexiones en paralelo debes abrir otra conexion (==>
otro proceso en el servidor).

(Pero que quede claro que uno de los puntos importantes aca es
distinguir entre los procesos creados desde el punto de vista del
servidor, que solo son procesos y nunca hilos, y aquellos creados en el
lado del cliente, que pueden ser procesos o hilos segun al programador
de la aplicacion le apetezca).

> 2- Si el primer punto es verdadero, mi opinión es que postgres hasta
> su última versión porta los hilos para dar la posibilidad de el uso de hilo
> con otra óptica, no la de concurrir los comandos, alguien me podría ser más
> claro en para que se usan los hilo en postgres?

Supongo que esta explicado arriba. Si no es asi, por favor reformula tu
pregunta, porque no esta claro.

> 3- Alguien conoce de la existencia de algún proyecto que esté
> trabajando en estos puntos.
>
> 4- Si alguien me pudiera dar una visión más completa de el porqué
> postgres no utiliza hilos y de sus planes futuros respecto a esto, le
> agradecería mucho.

Hay una version multihilo de Postgres, comercial, hecha por SRA
(http://www.sra.co.jp creo; el producto se llama PowerGres). Entiendo
que el principal objetivo era conseguir un mejor rendimiento en Windows;
pero que quede claro que lo hicieron antes de la version 8.0, que
incorporo el port a Windows usando un modelo multiproceso.

Postgres no usa hilos porque funciona bien asi como esta. De tanto en
tanto alguien propone usar un modelo multihebra pero siempre la
propuesta cae en llamas.

Una duda que me asalta es, por que estas investigando esto? Cual es tu
proposito ultimo?

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

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Luis Rodrigo Gallardo Cruz 2006-07-31 22:01:30 Re: Sobre hilos en Postgres
Previous Message Alvaro Herrera 2006-07-31 21:09:13 Re: Desaparicion de Archivos /data !!!