Roger Baklund wrote:

Maybe I don't understand connection pooling, then. Isn't its purpose
to allow a client -- say, a webapp running in Tomcat -- to multiplex
requests for *multiple* end users over a single connection?

Almost... except for the 'single connection' part. It will maintain a pool of connections, thus the name 'pooling'.

Of course -- I was trying to simplify for the purpose of discussion...


A sensible connection pooling implementation would do something like this:

- accept a client connection
- if a free database connection is in the pool:
  - return it to the user
- otherwise if the pool is full:
  - return error message to user "too many connections, retry later"
- otherwise
  - create a new database connection
  - add it to the pool
  - return it to the user

Once a user has got a connection, he keeps it for the entire session, that
usually means untill the program ends or the connection is explicitly
closed.

OK, but the "user" here is the servlet container (Tomcat), *not* the human end user.

There may be other ways to implement connection pooling, but I would say an
implementation allowing separate statements from separate users
intermingeled on the same connection was... well, at least special, if not
broken. Besides LAST_INSERT_ID(), user variables would also be broken in
such a system.

As would temporary tables, which is why I stopped using them for request-specific data :-)

Related to this, does each process in the query log match to a single
active connection? Or is that connection-pool-implementation dependent?

--
Hassan Schroeder ----------------------------- [EMAIL PROTECTED]
Webtuitive Design ===  (+1) 408-938-0567   === http://webtuitive.com

dream. code.




-- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]



Reply via email to