Subject Read-committed was Read Only Transactions
Author Ann W. Harrison
Guido Klapperich wrote:
>> Read-committed mode violates the Isolation and Consistency
>> properties of transactions. I don't know why anybody uses
>> it - at least not anybody who cares about consistent results.
> Sorry, I don't understand that.

A transaction is supposed to be ACID -

Atomic - it succeed or fails as a unit

Consistent - when it executes the same query twice,
the only changes it sees are the changes it made

Isolated - actions of concurrent transactions do no
affect it

Durable - when it commits, its changes are part of
the database until another transaction changes the

Most transaction modes relax those rules to a larger or smaller
extent. For databases that rely on record and predicate locks
for concurrency control, fully ACID behavior leads to a high
deadlock rate. Firebird uses versioning for concurrency control
and provides ACID (but not serializable) transactions without
inducing unacceptable levels of deadlocks or update conflicts.

Read-committed transactions see the changes made by concurrent
transactions - they're not consistent. Executing the same select
several times in a single transaction can get different results -
even if the transaction hasn't changed anything. And there's
no gain in concurrency.