On Tue, Feb 12, 2002 at 10:52:27AM -0500, Jeff Boes wrote:
: Does anyone here know if DBD::Pg starts a new transaction after a
: COMMIT?  That is, it appears that...
: 
: 
: $dbh->do(...);
: $dbh->commit(...);   # End of one transaction
: 
: # Code here will have an implicit 'BEGIN'
: 
: If this is the case, it would explain some performance problems we are
: having.  We have some detached processes running as daemons with open
: database handles.  We get a lot of these messages:
: 
:  NOTICE:  InvalidateSharedInvalid: cache state reset
: 
: which I'm told implies that we have a lot of "idle in transaction"
: processes.
: 
: If all this is true, how do I fix it?  Must my idle daemons release
: their database handles?  What about mod_perl processes?

>From the DBD::Pg man page:

  If AutoCommit is switched-off, immediately a transaction will be
  started by issuing a 'begin' statement. Any 'commit' or 'rollback'
  will start a new transaction. A disconnect will issue a 'rollback'
  statement.

That would imply 'yes'.  I think that's actually a feature of the
DBI, not just DBD::Pg, because the same holds true for other DBDs.
Use begin_work() or set AutoCommit=1 on your handles and then turn
AutoCommit off for your transactions.

* Philip Molter
* Texas.net Internet
* http://www.texas.net/
* [EMAIL PROTECTED]

Reply via email to