如果可序列化隔离级别有效,表X的内容是什么?
由于可序列化,我认为事务B不能执行任何操作。因此,行b不被放置在表X中,并且不执行事务A的删除行b操作。因此,表X只包括行a;然而,我的教授拒绝了这一理论,没有任何解释。
Transaction A Transaction B
1) Begin ....
2) Insert row a Begin
3) .... Insert row b
4) .... Delete row a
5) Delete row b ....
6) Commit ....
7) Commit有人能解释为什么我的理论是错误的吗?
发布于 2019-02-18 22:32:22
隔离级别仅适用于本地事务及其数据视图,而不适用于其他事务。其他连接的客户端可以看到各种奇怪的数据,因为它们不是任何事务所具有的隔离的一部分。至少在MySQL中,可序列化隔离级别不持有任何表锁。因此,TXA不会阻止其他写入的发生。
TXA将在t5和complete时影响零行。
TXB将在t4和complete时影响零行。
该表将有2行,a和b。
对于其他隔离级别,结果会有所不同。
对于表锁,时间安排如下所示:
0) Begin ....
1) LOCK TBL WRITE ....
2) Insert row a Begin
3) .... ....
4) .... ....
5) Delete row b ....
6) Commit ....
8) UNLOCK ....
7) Insert row b
8) Delete row a
9) Commithttps://stackoverflow.com/questions/48117929
复制相似问题