Subject | Re: [Firebird-Architect] Read Committed No Wait transactions |
---|---|
Author | Pavel Cisar |
Post date | 2004-09-22T09:29:22Z |
Ann,
On 21 Sep 2004 at 15:10, Ann W. Harrison wrote:
> At 02:35 PM 9/21/2004, steve summers wrote:
>
> >The answer to this confusion is the "Rec_Version" flag. In IBExpress, if you
> >click on the "Read Committed" radio button, you get read_committed,
> >rec_version, and nowait flags. The IB6 API Guide says
>
> Yes, that's it. No record_version is the default, which
> makes some sense if you're waiting for committed versions
> and absolutely must have the very latest, without regard
> to consistency. However, the existence of a transaction
> mode that considers a concurrent insert a fatal error continues
> to bug me.
No wonder it bugs you :-) No record version mode for read committed is
there just to mimic the behavior of lock & log database engines. There is
no need to favor it over firebird's natural "record version" mode except
for applications "converted" from other engines to Firebird. Being used
to MGA and fine-grained control over transaction options in native access
layers, I hit this wall myself sometimes with ISQL. Anytime it happen I
would skin anyone who decided that default rec.version/no rec.version in
SET TRANSACTION would be no rec. version. He/she was probably from
marketing department.
About NOWAIT option, it has it's use especially on write-only
transactions to detect collisions between concurrent updates more
quickly. Because all transactions normally end as committed, it's
pointless to wait on outcome of blocking one.
Best regards
-- Pavel