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

Reply via email to