Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Can process share a DBI connection?

( #180695=categorized question: print w/ replies, xml ) Need Help??
Contributed by Zombie jecouto on Jul 10, 2002 at 07:04 UTC
Q&A  > database programming


Description:

Hi. I wonder if it is safe to open a connection to a database and then use that same connection in all the childs your process forked. Or it its necessary to open a connection for each child? Thanks in advance

Answer: Can process share a DBI connection?
contributed by Zaxo

Each process should open its own DBI connection. Processes will readily share one if it's opened before fork, but that has bad side effects, and no good ones that I know of. Two processes talking over one connection may get a db server confused, and the first process to end will take the serverside connection down, with no notification to the surviving process. Further confusion may result when the survivor tries to close its copy.

Moral - Don't call &DBI::connect before a fork, even if one process never uses the connection.

Answer: Can process share a DBI connection?
contributed by grantm

I agree with Zaxo - don't do it. If you have a need to multiplex multiple processes into one DBI connection, you might want to investigate DBI::ProxyServer

Answer: Can process share a DBI connection?
contributed by pajout

I agree with previous answers. If problem is many opened connections, think about Apache::DBI (if forked processes are httpd's :) ) or about SQL Relay, which is daemon realizing connection pooling against various DB engines.

Please (register and) log in if you wish to add an answer



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • Outside of code tags, you may need to use entities for some characters:
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others drinking their drinks and smoking their pipes about the Monastery: (15)
    As of 2014-09-16 13:53 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      How do you remember the number of days in each month?











      Results (24 votes), past polls