Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: Serializable transactions get rolled back while there are no othertransactions running?!
Note in-line
-- Regards Jonathan Lewis http://www.jlcomp.demon.co.uk http://www.jlcomp.demon.co.uk/faq/ind_faq.html The Co-operative Oracle Users' FAQ http://www.jlcomp.demon.co.uk/seminar.html Optimising Oracle Seminar - schedule updated May 1st <ctcgag_at_hotmail.com> wrote in message news:20040620152317.432$RM_at_newsreader.com...Received on Wed Jun 23 2004 - 04:06:53 CDT
>
> > I think that's what most people would expect of serializable.
>
> Not I. I would expect one of the two to get a "cannot serialize" error.
> The isolation level that Oracle calls "serializable" is not truly
> serializable. I'm not saying that that level isn't useful, nor am I
saying
> that it could be made truly serializable without incurring significant
> performance penalties. I'm just saying they probably shouldn't have named
> it "serializable" when it really isn't.
>
I sympathise with the view-point. Life gets difficult when words are given a specific meaning for a technical context that doesn't match the 'intuitive' meaning outside that context. At the time, of course, 'serializable' was described twice in the SQL standard: and one of the descriptions was a list of the phenomena that qualify a serializable transactions - one of which was "repeatable reads". So Oracle put three ticks against the list, and said "that's it - we comply to that feature". I must read the latest standard some time to see what it says on the topic. Your comment leads to an interesting philosophical point - I execute a serializable transaction, but do NOT revisit row X, which gets changed and committed by another user in the interim. I execute the same serializable transaction, but DO revisit row X, which gets changed and committed by another user in the interim. However, there is nothing in my transaction that I do differently, whether or not I can see the change (which I couldn't in Oracle of course). Should either, neither, or both of those transaction fail according to your concept of serializable ? I think this may qualify as the "Schrödinger's Cat" of the serializable transaction. (Side-note: my spell-checker wants to change the American spelling of serializable into "fertilizable" - does this mean the entire discussion is a load of horse-manure ?)