Serializability was a little confusing to me, here's my interpretation:
Atomicity (all or nothing) guarantees that either all the writes happen, or none happen. But, with only atomicity you could have this:
Transaction_1 {
write A
write B
}
Transaction_2 {
write C
write D
}
Then, if the result was :
write A
write C
write B
write D
we would have atomicity but not serializability, since the transaction writes were interleaved.
gryffolyon
If we use a pessimistic detection TM, wouldn't your sequence result in a livelock?
paluri
@russt17 Since you are all writing to different memory addresses, and there are no conflicts between Transaction 1 and 2, no matter how the two transactions interleave, I think they will still have serializability, because the end result will be the same as if they had occured serially.
@gryffolyon The transactions wouldn't abort though because they don't conflict at all, right?
gryffolyon
@paluri. Yes they do not conflict and hence no livelock.
Serializability was a little confusing to me, here's my interpretation: Atomicity (all or nothing) guarantees that either all the writes happen, or none happen. But, with only atomicity you could have this:
Transaction_1 { write A write B }
Transaction_2 { write C write D }
Then, if the result was : write A write C write B write D we would have atomicity but not serializability, since the transaction writes were interleaved.
If we use a pessimistic detection TM, wouldn't your sequence result in a livelock?
@russt17 Since you are all writing to different memory addresses, and there are no conflicts between Transaction 1 and 2, no matter how the two transactions interleave, I think they will still have serializability, because the end result will be the same as if they had occured serially.
@gryffolyon The transactions wouldn't abort though because they don't conflict at all, right?
@paluri. Yes they do not conflict and hence no livelock.