Hi,
Is that last quote just imprecise writing or is there really a
difference between SQLite's Snapshot Isolation in WAL mode and
its Serializable isolation in ROLLBACK mode?
Yes, there is a difference.
...sorry, it seems it was my turn to do some sloppy writing!
Thanks for the detailed explanation of how it works. What I meant to ask
was "is there really a difference in the *semantics*?". i.e. from the user
perspective, can databases in the two different modes end up in different
states?
... it is looking at the database as it
was at the time it obtained its "repeatable read" timestamp, and
cannot be permitted to make changes since it is looking at an
"old view" that does not represent an updateable state of
affairs.
Semantically, I understand this to mean that, from the POV of the writer
and all other transactions, that reader was virtually kicked out in the
same way as it would have been in ROLLBACK mode but, because enough state
is available, it's allowed to stay in its bubble until it's finished with
it.
I guess there's a difference in ordering behaviour under load but that's
just to do with exactly which order ends up being chosen for the
transactions, not that it's no longer equivalent to some serial order being
chosen?
The difference in ordering seems less if all write transactions always
start with BEING IMMEDIATE tho'.
see https://www.sqlite.org/wal.html
especially 2.2 Concurrency
I don't think that the stuff about checkpointing, durability aside, is
relevant from a semantic POV, yes?
Thanks for your help.
Best wishes,
@ndy
--
andy...@ashurst.eu.org
http://www.ashurst.eu.org/
0x7EBA75FF
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users