Suppose your web server has keep alive turned on. If you write an app that creates and uses a persistant connection, and the user just quits without "logging out" of the app (which is where you'd close the persistant connection) then the connection stays open to the db as long as your keep alive time out is set for, typically 10 minutes.
Most databases use about 512k to 1M memory per backend, and often having a lot of backends for any database (not just mysql) can cause the database's overall performance to suffer.
This is especially true if you don't have enough ram for all the backends and your server starts swapping ram to fit the backends into memory.
If apache is set for max children of 200, and you've only got 64 Megs of ram, then you'll run out of ram long before you get to 200 httpd processes running.
It's a good idea to figure out how much each apache/php and postgres child weighs in at.
While running an access through the web server, use top to capture the numbers for an average httpd and database master daemon.
For my postgres box:
postgres Size: 2340 Share: 1896
httpd Size: 1776 Share: 1352
Numbers should be similar for most databases.
So the first process of each costs us a fair bit, but each child only costs the difference of the size and shared memory. I.e. postgres costs us 2.3M+(2.3M-1.9M)n-1 or 2.3M+400k(n-1), while apache costs us about 1.7M+400k*(n-1).
so, each child costs about the same. Now the trick is to limit the apache server so that before we run out of memory and kill our box, people start getting no response due to lack of available children. Better the box go slow than down.
We can fudge the number to about 1 Meg per child (fudge is good, better to guess high on this) and just say that we can handle about 1 child per meg on the box. so, for a machine with 128 Megs ram, assuming the OS can live on 16Megs or so, and a little spill into the swap file, we could handle 100 or so clients max. so, set apache or whatever web server you use to that number of max children and you'll be ok.
If you hit a dbase once on the front page, once on the middle, and maybe two more times, you probably aren't going to gain alot unless your database eats up a lot of time to make connections. On postgres, it's well under 5% of the total time to execute smaller transactions, and gets smaller with larger numbers of queries in the same script, so it's no big deal. I don't know the numbers for other dbases and connection time.