Thanks Michael, Jonathan, and Rob for all the info. So the database reconnection is required with some DBD drivers but not with others. The software I'm writing has to be portable, so I'll go with a process-pool approach for the server, then possibly take advantage of driver-specific features where available.
Cheers, James On Mon, May 14, 2012 at 7:20 AM, Rob Fries <frie...@gmail.com> wrote: > Hey James, > > I was running into a similar situation but for a backend system that > ran multiple quick scripts to check state for automation. I was > working on building a daemon that would hold the connections, adding > as needed and destroying excess using some POE modules. > > while working on it though, our DBAs upgraded us to Oracle 11 which > has a built in DB Pool (DRCP) which we are utilizing now. if you are > using an Oracle DB, look into it. here is the connection string I am > using: > > $self->{dbh} = DBI->connect("dbi:Oracle:$config->{sid}", > $config->{user}, $config->{pass}, > { AutoCommit => 0, ora_drcp => 1, > ora_drcp_class => "feedAutomation" } ); > > -Rob > > On Sun, May 13, 2012 at 2:29 PM, James Marshall <ja...@jmarshall.com> > wrote: > > I'm writing a forking HTTP server that needs to access a database with > each > > hit. Speed is pretty important, so I was hoping to reuse database > handles > > and prepared statement handles in the forked child processes. Is this > > possible, or do I really need to reconnect to the database and prepare > the > > statements in each child? > > > > Info I found from googling, faqs, and list archives generally implies > > reconnection is required, but is inconclusive (at least what I found). > > > > Alternately, is there any way to clone (deep or shallow) a prepared > > statement handle without repreparing, or a database handle without > > reconnecting? > > > > The only solution I've come up with is to have the server daemon manage a > > pool of connected database handles and prepared statement handles, which > > complicates the program a bit. Any other solutions I'm missing? > > > > Thanks! Links to old discussions welcome if this has been answered > before. > > > > James > >