Talk:Multiversion concurrency control

From Wikipedia, the free encyclopedia

Merging is impossible! MVCC is a different term it, there are many MVCC systems but only few are integrated with timestamp CC. Many of them are working with two-phase locking (2PL) to reduce shared-locks.


There are at least two kinds of MVCC using 2PL (Oracle merged, Postgres) and using timestamps (also Oracle?). One can say that MVCC extends both CC methods to eliminate read limits. Also pure timestamp CC does not store versions but only detects conflicts based on timestamps and restarts transaction. source1 source2 --Adie 20:16, 3 August 2005 (UTC)


Also see Multi-Version_Concurrency_Control. Looks like a better candidate for merging :-).Nicolas Barbier 20:27, 26 October 2005 (UTC)

Agreed. I've made the change. Personally, I think this article is more technical than it needs to be. Perhaps use the first (and only paragraph) from the other page, plus the last from this one? Turnstep 23:34, 26 October 2005 (UTC)

[edit] Snapshots, MVCC, and docs

User:Tarvin added this:

The documentation for some DBMSes use the Snapshot Isolation term for Multiversion Concurrency Control.

Can you give a precise citation, please? Because if this is true then the docs are wrong. MVCC can be used to implement snapshots, but it's not synonymous with that isolation level any more than 2PL is. So if it's true that they state this then the article should probably clarify that it's a misstatement. --Craig Stuntz 21:25, 8 February 2006 (UTC)

You are right: MVCC can be used to implement Snapshot Isolation (SI). I've removed the disputed sentence from the page for now.
I just thought that SI should be mentioned on the page, because it's in instance of MVCC.
TroelsArvin 22:26, 8 February 2006 (UTC)
I stuck in a mention. See what you think and feel free to edit. --Craig Stuntz 14:47, 9 February 2006 (UTC)


[edit] Further History and Comments; Prime System Reference


The transaction processing system I developed on Cm* (CMU's 50-way multi-microprocessor) for my thesis research in 1981 used multi-version pages to provide a most-recent-snapshot mechanism for queries. This was not the main emphasis of the work, although there were some new features, including: garbage collection of old versions of pages at the earliest point at which it could be guaranteed they would no longer be needed, based on the minimum value of a WPCL (write-phase completion list - the write phases of multiple transactions could be simultaneously in progress). This was done efficiently by maintaining a garbage list, which was a list of (version number, version set) pairs. The best documentation is my thesis, Design of Concurrency Controls for Transaction Processing Systems, CMU 1982 (still available, I notice, via ACM's digital library, and probably elsewhere - see section 6.4 for more details on the garbage list structure). There is some discussion of design philosophy supporting this approach as well (e.g. see Figure 1.1 page 3). Bernstein/Goodman and Reed are referenced (of course, along with all other related work of which I was aware); however the Prime system was not referenced in my thesis since I didn't know about it. I found out about the Prime system later, and referenced it in my paper Separating Policy from Correctness in Concurrency Control Design, Software - Practice and Experience, Vol. 14(9), 827-844 (Sept. 1984). One reference for the Prime system is the following (unfortunately I no longer have a copy):
D.J.DuBourdieu, Implementation of Distributed Transactions, Proc. 6th Berkeley Workshop on Distributed Data Management and Computer Networks, UC Berkeley, Feb. 16-19, 1982.
Above comments submitted by John T. Robinson
Jtrbnsn 19:46, 24 January 2007 (UTC)

Thanks for submitting this. I have access to the Digital Library and I'll try to remember and look up the reference when I have more time. --Craig Stuntz 21:19, 24 January 2007 (UTC)

[edit] timestamp

The Wikipedia article for "timestamp", which is cross-referenced here, is about a cryptographic concept that seems different than a transaction timestamp. Perhaps the cross-reference should be replaced by something else? 192.127.94.7 19:53, 15 February 2007 (UTC)Jim Chapman