Subject Re: [firebird-support] Re: what is the most fastest isolation level ?
Author Ann Harrison
On Tue, Feb 28, 2012 at 2:31 AM, nathanelrick <nathanelrick@...> wrote:
>
> by the way i use isc_tpb_read_committed + isc_tpb_no_rec_version + isc_tpb_wait but i have all the time deadlock when i do massive update (update on thousands rows)
>
> What can cause a deadlock when using isc_tpb_read_committed + isc_tpb_no_rec_version + isc_tpb_wait ? because i was thinging that the transaction simply wait (undefinitively?) that rec are committed instead of raising a deadlock ...

The problem is that the read_committed transaction will fail if it
tries to update a record version created by a concurrent transaction,
even if that transaction has committed. It's kinda dumb, but that's
the way it's implemented. Read-committed transactions follow the same
update concurrency rules as consistent read transaction. Even though a
read-committed transaction can read a record version that was created
and committed by a concurrent transaction, it can can't update that
version.

I stand by my preference for concurrency as an isolation mode.


Good luck,

Ann