Subject Deadlock Troubleshooting.
Author Alexander Liberov
Hi,

I'm running Firebird 2.5.1. Clients are written in Delphi, connect using FIBPlus.
All SELECT statements are running under transactions with parameters:READ_COMMITTED | REC_VERSION | NOWAIT | READ_ONLY.
All UPDATES/DELETES/INSERTS are running under transactions with parameters:READ_COMMITTED | REC_VERSION | WAIT | READ_WRITE.
Transaction are committed using Commit or Commit_Retaining.

1. Occasionally I'm getting Deadlock error on SELECT statements. Is there a way to specify different transaction parameters or any other way to avoid deadlocks?
Is the record still being held locked after COMMIT_RETAINING?

2. I'm using trace service logs.
-It appears that a new log file starts when current log file reaches certain size. Is there a way to reduce the maximum size of a log file?
-Is there a way to log failed statements as well? If I try to insert a record and that insert fails because of FK constraint, that statement does not get logged.
-For some transactions I cannot find START_TRANSACTION log record. Only COMMIT_RETAINING records. How can I find out if transaction is still active or not.
-Is there more detailed documentation on what information can be recorded in the Trace Service log?

3. Does FB become completely unresponsive during garbage collection or only 'unlucky' request gets delayed?

Thanks in advance,

Alexander Liberov