Re: Multihilo

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Edwin Quijada <listas_quijada(at)hotmail(dot)com>
Cc: Juan Martínez <jeugenio(at)umcervantes(dot)cl>, Eugenia Calvo <ecalvo(at)siu(dot)edu(dot)ar>, Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Multihilo
Date: 2008-02-08 19:56:35
Message-ID: 20080208195635.GH31022@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Edwin Quijada escribió:

> > From: jeugenio(at)umcervantes(dot)cl

> > Según la web [1] de una persona aparentemente ;-) entendida en postgres,
> > efectivamente no hay multihthreading aun.
> >
> > Lamentablemente en esta web no establece sobre cual versión se refiere.

Todas las versiones existentes son asi.

> > [1]
> > http://momjian.us/main/writings/pgsql/hw_performance/index.html#SECTION000140000000000000000
>
> Bueno, para poder entender un par de cosas:
> digamos que tengo una aplicacion la cual tiene conectados 200 usuarios
> pero via web , es decir, todos usan un mismo user/pass para la
> conexion , si tomo en cuenta de lo que se dice , Postgres abrira
> multiples procesos por cada conexion o solo uno.

Postgres abre un proceso por cada sesion. Si el servidor web abre una
sesion por cada usuario, entonces tienes 200 procesos.

Ahora, si eres un DBA competente, lo que haces es poner un "pool de
conexiones" frente a la BD, tipicamente pgpool o pgbouncer. De esta
manera, el servidor web se conecta al pool, y el pool se conecta a la
base de datos. Esto hace que en vez de abrir 200 sesiones, abras unas
pocas sesiones y le pasas cada una a un usuario web, por turnos; el
servidor web se las "devuelve" al pool en cuanto las han dejado de
ocupar. De este modo puedes atender los 200 usuarios con unas 10 o 20
sesiones (por ejemplo), lo cual te da mejor rendimiento porque te
ahorras el establecimiento de cada sesion, que es un proceso
relativamente lento.

> Esto asi porque en ese esquema, si solo abre un proceso, solo
> aprovecharia un unico procesado de los N que pudiera tener?

Hmm, no necesariamente. Lo hace asi porque es la unica manera de
hacerlo. Un proceso (== una sesion) no puede atender a mas de un
usuario a la vez.

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message carlos alvarez osejo 2008-02-08 20:18:33 Replicacion y alta disponibilidad
Previous Message Alvaro Herrera 2008-02-08 19:39:15 Re: Multihilo