From: Alex B. <boi...@in...> - 2006-02-16 17:11:47
|
Thompson, Bryan B. wrote: >I am sure that we will go around on this any number of times when getting >into an implementation. However, it is my understanding that if there is >a tx with a later timestamp, e.g., ts(t2)>ts(t1) then t2 can not read >data which t1 updates since the update would invalidate the read by t2 >(t2 would have failed to read the most current version as of the timestamp >when it started executing). In this case you can either abort t1 (the >writer) or you can block t2 (the reader) until t1 has completed. What >you can not do is permit a writer to write a version of x that has a >timestamp earlier than the most recent read of x -- since that would >invalidate the read by changing the value of x post-factor. > > t2 does not have to read the latest version of an object to commit and remain completely serializable. One way to look at this is to take the hypothetical case where t2 does not write anything. In that case, t2 can be considered to have happened before t1 even though it started after t1 (but before t1 committed). alex |