可序列化的隔离级别

时间:2018-01-05 16:52:06

标签: database serialization

如果可序列化隔离级别有效,表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

有谁可以解释为什么我的理论是假的?

1 个答案:

答案 0 :(得分:0)

隔离级别仅与本地事务及其数据视图有关,而与其他事务无关。其他连接的客户端可以看到各种形式的奇怪数据,因为它们不属于任何事务隔离。至少在MySQL中,可序列化隔离级别不包含任何表锁。因此,TXA不会阻止其他写操作的发生。

TXA将在t5结束并影响零行。

TXB将在t4时影响零行并完成。

该表将包含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)                   Commit