in reply to DBI, Apache::DBI and mod_perl - Is one connection sufficient?

My impression is that DBI connections are not shared between threads in Apache 2.0. With plain DBI, connections are local to each client thread. With Apache::DBI, each thread gets its own persistent connection but the connections are not pooled together.
  • Comment on Re: DBI, Apache::DBI and mod_perl - Is one connection sufficient?

Replies are listed 'Best First'.
Re: Re: DBI, Apache::DBI and mod_perl - Is one connection sufficient?
by perrin (Chancellor) on Feb 25, 2004 at 19:56 UTC
    That's correct, nothing is shared between threads unless you explicitly make it shared and Apache::DBI does not. Each thread will have its own connection. As long as your DBD is thread-safe, it will work fine.

      I am wondering what is wrong with my setup then (if anything). If I use the mysql client to connect to the server, it shows me "Your MySQL connection id is 0 to server version: 4.0.17-nt". Then I start up Apache, do many page requests (even tried simultaneously loading 40 pages within Opera). I then go back to the mysql client and reconnect and get connection #3. This tells me that all the page requests were handled within connection #2. So...?

        Read the Apache::DBI documentation. It includes instructions for activating debugging which will log whether or not new connections are being made.
        s/(?<=connection id is )0(?= to server)/1/;
        "It's not a bug it's a feature!"

        As all requests came from the same IP, from the same client even and were probably/perhaps for the same database, there is no need to start up x connections. Apache::DBI is bright enough to recognize that fact and limit the number of connections.

        CountZero

        "If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law