Hi,
i have a question about two parallel transactions which insert the
same key.
Assume that key A does not yet exist.
T1 Begin
T2 Begin
T1 Insert A
T2 Insert A
T1 Commit
T2 Commit
My guess is: "T2 Insert A" is a conflict with the previous insert of
T1. But i also think that in a MVCC database the conflict can only be
resolved when T2 is committed. What happens then? Does the commit
fail, or is A silently overwritten? Or is the typical behaviour in
this case implementation-specific?
Thanks for your answers,
Christoph
David BL - 23 Jul 2008 10:11 GMT
> Hi,
>
[quoted text clipped - 18 lines]
> Thanks for your answers,
> Christoph
I think MVCC is normally (only) aimed at allowing for better
concurrency between readers and writers (and not amongst writers) and
therefore is inapplicable in this example. ie the transactions would
necessarily be serialised.
Bob Badour - 23 Jul 2008 13:57 GMT
> Hi,
>
[quoted text clipped - 18 lines]
> Thanks for your answers,
> Christoph
Even in MVCC, T2's Insert A will block until after T1 Commit.
| T1 | T2 |
-------------------
| Begin | |
| | Begin |
| Ins A | |
| | Ins A |
| | (block)|
| Commit | (fail) |
Christoph Rupp - 23 Jul 2008 14:47 GMT
Thanks David, thanks Bob for the helpful answers.