[DUG] Firebird connections / queries / transactions

Rohit Gupta rohit at cfl.co.nz
Thu Jul 28 10:22:51 NZST 2005


As this is poorly understood by newbies, I will explain.

Firebird / Interbase use a versioning model.  This is where a query 
for data looks at the last committed data and then through all the 
transactions that are still open, in limbo or rolledback.

Putting it another way, every query gets a version / copy of the data 
which can be different to the same query run a few seconds later.  
The problem really manifests itself when the different queries are 
interleaved and an earlier transaction that is still open means that 
later committed transactions can not be processed fully.

For instance you could have update a record in an earlier 
transaction (but not committed it) and then a later query deletes the 
same record and performs a commit.  The engine tries to sort these 
problems out.

Over time this list can get large so much so that on one of our sites 
the system was unusable by lunchtime.

This can be fixed by mending/validating the database.  Even then, 
some of the transactions remain and require a backup/restore.

Readonly transactions do not contribute to this problem.  Note that 
both the table/query and the transaction has to be readonly.  
WARNING - Do not use the default transaction as it is not readonly 
and was the cause of our problems.

Date sent:      	Wed, 27 Jul 2005 17:02:02 +1200
From:           	Phil Middlemiss <phil at tumonz.co.nz>
Organization:   	MTS Ltd
To:             	rohit at cfl.co.nz,
  	NZ Borland Developers Group - Delphi List <delphi at ns3.123.co.nz>
Subject:        	Re: [DUG] Firebird connections / queries
Copies to:      	
Send reply to:  	NZ Borland Developers Group - Delphi List <delphi at ns3.123.co.nz>
	<mailto:delphi-request at ns3.123.co.nz?subject=unsubscribe>
	<mailto:delphi-request at ns3.123.co.nz?subject=subscribe>

[ Double-click this line for list subscription options ] 

Ah, I was just about to ask if, for SELECT queries, it was preferable to 
rollback or to commit. But I guess that answers the question. What is 
the long term effect on a server if I keep using rollbacks?

Phil.

Rohit Gupta wrote:

>Paul,
>
>just make sure that you do not leave transactions open.... either 
>have readonly ones or commit/rollback as soon as possible.  And 
>avoid rollback, Firebird seems to treat them as transactions in 
>limbo.
>
>From:           	"Paul Lowman" <paul_lowman at xtra.co.nz>
>To:             	"Delphi List" <delphi at delphi.org.nz>
>Date sent:      	Wed, 27 Jul 2005 15:51:54 +1200
>Copies to:      	
>Subject:        	[DUG] Firebird connections / queries
>Send reply to:  	NZ Borland Developers Group - Delphi List <delphi at ns3.123.co.nz>
>	<mailto:delphi-request at ns3.123.co.nz?subject=unsubscribe>
>	<mailto:delphi-request at ns3.123.co.nz?subject=subscribe>
>
>[ Double-click this line for list subscription options ] 
>
>Hi all
>
>I am using Firebird / dbExpress in an industrial control application and
>wondered about the following points:
>
>Is it OK to open a connection to a database and leave it open for extended
>periods (ie: days) or should I open and close the connection on demand?
>
>Similarly is it OK to prepare queries when the app starts and leave them in
>a prepared state for extended periods?
>
>My instincts tell me that this may be a bad approach ...
>
>Any opinions welcome ...
>
>Cheers
>
>Regards
>
>Paul Lowman
>
>paul_lowman at xtra.co.nz
>
>_______________________________________________
>Delphi mailing list
>Delphi at ns3.123.co.nz
>http://ns3.123.co.nz/mailman/listinfo/delphi
>Regards
>
>Rohit
>
>======================================================================
>CFL - Computer Fanatics Ltd.  21 Barry's Point Road, AKL, New Zealand
>PH    (649) 489-2280 
>FX    (649) 489-2290
>email rohit at cfl.co.nz  or  r.gupta at xtra.co.nz
>======================================================================
>
>
>_______________________________________________
>Delphi mailing list
>Delphi at ns3.123.co.nz
>http://ns3.123.co.nz/mailman/listinfo/delphi
>
>
>
>  
>
_______________________________________________
Delphi mailing list
Delphi at ns3.123.co.nz
http://ns3.123.co.nz/mailman/listinfo/delphi
Regards

Rohit

======================================================================
CFL - Computer Fanatics Ltd.  21 Barry's Point Road, AKL, New Zealand
PH    (649) 489-2280 
FX    (649) 489-2290
email rohit at cfl.co.nz  or  r.gupta at xtra.co.nz
======================================================================




More information about the Delphi mailing list