I read about Multiversion Concurrency Control in Wikipedia. They say that every piece of data in DB has a Read Time Stamp (RTS) andIf 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)?
Wikipedia on MVCC
concurrency;database theory;shared memory