Subject Re: [firebird-support] deadlock
Author Helen Borrie
At 12:19 AM 13/08/2005 -0700, you wrote:
>I have my transaction for 50 TIBTables. If I Commit it, then I close all
>50 tables and have to open these again.

Do you have users who are capable of looking at 50 SELECT * queries
simultaneously? Do you realise that, if this transaction is read-write (as
it must be, if you are using TDataset methods to enable users to maintain
records!), you will create a tremendous amount of garbage in your database,
if you do not hard-commit that transaction frequently?

>Is it a good approach to have another transaction, only for new records,
>that I commit imediatly ?

As an approach to reducing your garbage overhead, you could (should!?!?!)
place your TIBTables into a read-only, Read Committed transaction and
perform *any* inserts, updates or deletes through quick DSQL requests that
do not hang around uncommitted for indefinite periods.

Watch out for your TIBTransactions. I believe they use AutoCommit with
CommitRetaining by default. CommitRetaining should be *avoided* under all
conditions except where you have implemented a way to force users to take
additional, frequent hard commit action.

Seriously consider abandoning those TIBTables and replacing them with
parameterised queries. And think hard for a good reason why you need 50
tables active at all times.