0

enter image description here

Could you help me understand why the schedule on the picture is view serializable without any "blind write"?

Also, should the results be the same if two schedules are view equivalent?

I did create serial version of the schedule and compare but they do not seem view equivalent to each other.


Could you tell me if a concurrent schedule is view serializable, would it and a serial version of it have the same result in the end?

Me and my lecturer have different opinions, and it is very hard for me to understand hers. She thinks it is view serializable but I do not. I am not sure who is correct.

Definitions

From GeekForGeeks:

If two schedules are view equivalent to each other, they are called as being view serializable.

  1. Initial Read If a transaction T1 reading data item A from initial database in S1 then in S2 also T1 should read A from initial database.
  2. Updated Read If Ti is reading A which is updated by Tj in S1 then in S2 also Ti should read A which is updated by Tj.
  3. Final Write operation If a transaction T1 updated A at last in S1, then in S2 also T1 should perform final write operations.
  1. Initial Read If a transaction T1 reading data item A from initial database in S1 then in S2 also T1 should read A from initial database.
  2. Updated Read If Ti is reading A which is updated by Tj in S1 then in S2 also Ti should read A which is updated by Tj.
  3. Final Write operation If a transaction T1 updated A at last in S1, then in S2 also T1 should perform final write operations.

If this three conditions are satisfied, these two schedule are called view equivalent to each other.

1

I assume that X refers to the same table row everywhere.

In that case, the two transactions in your picture are not serializable, and indeed a lost update would occur. Any serial execution of the transactions would produce a different result from the nested execution you are showing.

To clarify the term "serializable", here is how the SQL standard defines it:

The execution of concurrent SQL-transactions at isolation level SERIALIZABLE is guaranteed to be serializable. A serializable execution is defined to be an execution of the operations of concurrently executing SQL-transactions that produces the same effect as some serial execution of those same SQL-transactions. A serial execution is one in which each SQL-transaction executes to completion before the next SQL-transaction begins.

Wikipedia has this definition for view-serializable:

View-serializability of a schedule is defined by equivalence to a serial schedule (no overlapping transactions) with the same transactions, such that respective transactions in the two schedules read and write the same data values ("view" the same data values).

That seems mostly equivalent, except that the SQL standard only talks about the effects, while Wikipedia talks about reading values as well. But if you read a value and that has no effect, you might as well not read it, so the distinction is mostly philosophical.

And the schedule in your question satisfies neither of these definitions.

1
  • Noted. I will do further research on it and figure it out. Thank you so much for taking your time. anyway ! Apr 1 '20 at 8:47

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.