Talk:Snapshot isolation

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

The article currently reads, "Snapshot isolation was first introduced in 1995..." but I think this is wrong. InterBase has had it for much longer, possibly even since it was introduced in 1985. You could look up Reed's 1978 paper proposing MCC to see if he mentions it there; it wouldn't surprise me. --Craig Stuntz 18:50, 3 April 2006 (UTC)[reply]

Every paper that I have read cites the 1995 paper as the introduction of SI. There are two possible explanations for the discrepancy: (1) Academic papers must cite other academic papers for definitions, so the first paper introducing SI became its academic "birth"; (2) InterBase pre-1995 had MCC but not SI, instead choosing to implement serializability. I'll research some more, but I may not have access to all the relevant papers as I'm not an IEEE member. --Chris Purcell 19:13, 3 April 2006 (UTC)[reply]

Actually, I'm positive InterBase had snapshot prior to 1995, because it was in IB 4, released in 1994. I never used any earlier version of IB, so I don't know how far back it goes. You can get Reed's paper from MIT without any membership. I'm an ACM member so if you need me to look up anything in the ACM library just ask. --Craig Stuntz 19:31, 3 April 2006 (UTC)[reply]

Note this quote from Jim Starkey in Multiversion concurrency control: "The inspiration for multi-generational concurrency control was a database system done by Prime that supported page level snapshots. The intention of the feature was to give a reader a consistent view of the database without blocking writers. The idea intrigued me as a very useful characteristic of a database system." --Craig Stuntz 19:39, 3 April 2006 (UTC)[reply]

You're absolutely right, the 1995 paper itself confirms it (buried somewhere on page 8). I'll update the page if nobody else has yet. Thanks. --Chris Purcell 19:49, 3 April 2006 (UTC)[reply]

In fact, the 1995 paper also claims that "the engine underlying Microsoft's Exchange System" provided Snapshot Isolation at the time of publication. It provided no citation for this claim, and I can't find corroboration in a brief Google search. In fact, I don't know what "Microsoft's Exchange System" is, so any help here would be most appreciated. --Chris Purcell 20:06, 3 April 2006 (UTC)[reply]

Maybe Microsoft Exchange Server? --Craig Stuntz 20:42, 3 April 2006 (UTC)[reply]

That puts the snapshot isolation in either ESE or its predecessor, JET Blue. I can't find anything confirming that these provided snapshot isolation, so I can't really add it to the article.

Also, to clear up an earlier point, Reed's 1978 paper does not appear to make any reference to snapshot isolation. It seems that the Berenson et al. proposal stemmed directly from the InterBase 4 development, which was entirely novel.

It is also hinted in another paper that "SC != serial" was only proved in the 1995 paper, which would suggest the InterBase 4 team were not aware of this (trivial) result. I'm not sure I believe that, but I haven't yet got a hold of M. Thakaar's Transaction Models in InterBase 4 (Proceedings of the Borland international Conference, June 1994) to confirm or deny it. --Chris Purcell 22:40, 3 April 2006 (UTC)[reply]

I strongly doubt that the Thakaar paper formally proved anything. I've presented papers at multiple Borland conferences and the subject matter tends to be quite practical, how to use the software as opposed to relational algebra. I can probably find someone who has a copy if you think it will help. That said, I think that snapshot isolation should be dated to when it was first described or implemented, not to when certain aspects of it were proved. I very much doubt that snapshot was introduced in IB 4 as this description of IB 4 new features does not mention it. My wild guess is that it goes back to the earliest days of InterBase (and maybe even RDB/ELN, which debuted about a year before IB and also had MCC), but I don't really know. --Craig Stuntz 14:43, 4 April 2006 (UTC)[reply]

One doesn't need a formal proof; a trivial example is sufficient to show that IS != serializable. As to discovering exactly when snapshot isolation was first used, I would be most interested, and it would improve the page. I'd also like to see that paper. But there's no necessity. --Chris Purcell 15:56, 4 April 2006 (UTC)[reply]

I'll ask around and see what I come up with. --Craig Stuntz 16:34, 4 April 2006 (UTC)[reply]

Following User:AnnHarrison's change to the date, from 1994 to 1984, which is equally uncited, rather than revert I've put a "citation needed" note in the text. I will revert it if no citations are forthcoming. --Chris Purcell (talk) 11:27, 24 September 2010 (UTC)[reply]


The article says: "When the transaction is completed, it will commit only if its updates do not conflict with any other transaction that has committed since the snapshot was taken." Couldn't you just change "that has committed since the snapshot was taken" to "that has begun since the snapshot was taken", and presto, no more write skew! -- RK

No, that would still exhibit write skew. Reread the example in the definition. --Chris Purcell 11:57, 28 June 2007 (UTC)[reply]

References to PostgreSQL[edit]

In PostgreSQL version 9.1, expected to be released in summer of 2011, PostgreSQL will continue to provide Snapshot Isolation when Repeatable Read Isolation is requested, but will provide Serializable Snapshot Isolation (SSI or SerializableSI) when Serializable Isolation is requested. What is the proper way to adjust this Wikipedia page to reflect that, once the release is out? (The current statement about PostgreSQL in the third paragraph will be outdated, unless qualified by release numbers.) Is any mention of this before the actual release appropriate? Full disclosure: this feature was added to PostgreSQL by myself (Kevin Grittner) and Dan Ports of MIT.

On a not-altogether-unrelated note, the footnote pointing to PostgreSQL documentation on this page is referring to a five year old version which is scheduled to go out of support later this year.

Kgrittn (talk) 22:53, 12 April 2011 (UTC)[reply]

Commitment ordering[edit]

The neutrality of part of this page is disputed, as part of a wider discussion. See Talk:Commitment ordering and Wikipedia talk:WikiProject Computer science#User:Comps / Commitment ordering. —Ruud 14:24, 23 December 2011 (UTC)[reply]

Reference to MySQL[edit]

Does MySQL/InnoDB really implement Snapshot Isolation? It's own manual doesn't make that claim (following the link from this article). Its RR may qualify as SI for read-only queries, but it allows read-write anomalies that aren't allowed by the usual definition of SI. So I think it's misleading to list it, at least without qualification. There was some discussion of this over on the PostgreSQL bugs mailing list.

167.220.242.149 (talk) 21:30, 2 July 2020 (UTC)[reply]