nlv11281 at natlab.research.philips.com
Mon Jul 3 06:53:47 EDT 2006
> One important thing not to overlook if you are going to implement a > MySQLSession class is database connection pooling. In the particalur case of MySQL, the need may not be that high. I did some benchmarking around 2002 with the MySQL versions of that time (somewhere around 4.0), and could not prove the pooled version to be any faster than the non-pooled. Most of the time was spent in other parts of the request handling, setting up the database connection to MySQL appeared to be neglegible. Note that this behaviour is specific to MySQL using a UNIX socket on the local host. Oracle for example often took a few seconds to set up a connection. On a TCP socket, the delay is a bit more. You might consider using MySQL replication to allow the DB to run on all the web servers locally while still sharing all data between them. Having said all that, a thread safe DB pool takes only about ten lines of Python code to create, so it's a piece of cake. When you ARE pooling connections, be aware of the following: - The database will not like thousands of open (but idle) connections. Close them if you have too many spare ones. - Connections may stay open for days. Be sure to do some kind of "ping" on a connection when you retrieve it from the pool, or be prepared to handle connection-lost errors later on.