I read about Multiversion Concurrency Control in Wikipedia. They say that every piece of data in DB has a Read Time Stamp (RTS) and

If transaction Ti wants to Write to object P, and there is also another transaction Tk happening to the same object, the Read Timestamp RTS(Ti) must precede the Read Timestamp RTS(Tk), i.e., RTS(Ti) < RTS(Tk), for the object Write Operation (WTS) to succeed. A Write cannot complete if there are other outstanding transactions with an earlier Read Timestamp (RTS) to the same object.

I am asking to interpret it because literal interpretation says that you can ever update anything only in single-user mode. Indeed, assume there is more than one transaction active in the DB. These are parallel transactions and, as such, they have the same RTS to whatever object you look at. This means that there is no transaction $T_i$ whose RTS is strictly lower than the others

$$RTS(T_i) < RTS(T_{any other})$$

This means that nobody can update any object. Which concurrensy are they talking about with such rules?

Moreover, their example demonstrates that T3, started after long-running T2 was able to update something and T2 these data. Yes, this raises another question that you may not answer: if transactions can read only RTS that are not higher than their timestamp, how can T2 read those T3-produced data after we defined RTS(T2) = 2 whereas T3 should produce version 3? How do you define the RTS(transaction)?

  • $\begingroup$ This Wikipedia article seems to be poorly written. I suggest that you look for better sources. $\endgroup$ – André Souza Lemos Dec 2 '16 at 0:21
  • $\begingroup$ Please choose your question and state it in the title. $\endgroup$ – reinierpost Apr 26 '18 at 6:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.