在上一篇文章中,涉及一个小问题,数据库事务的一致性何时建立?
这个问题相对重要。如果我们不弄清楚,它可能会影响我们的实验结果,然后得出错误的结论,因此今天Song Brother与您简要介绍了这个话题。
让我给你一个错误的演示。
我们打开两个会话窗口,默认情况下可以重复读取隔离级别。让我们看一下:
首先查看A会议中的当前用户表,并在检查后开始交易:
您可以看到当前年龄为101。
接下来,修改B会议中的年龄:
可以看出,B对话已成功修改。
接下来回到A对话查询记录:
可以看出,会议的记录也发生了变化。完整的测试过程如下:
你能反复阅读吗?
有理由重复阅读的原因是,其他交易的运作不会影响当前的交易,但是上述情况似乎是重复阅读并通过我们理解的重复阅读而退出。
我不知道朋友是否仍然记得重复阅读的特征:
从这个角度来看,第一部分似乎没有问题,因为我们在A会话中多次执行了Select语句,并且发现的结果是相同的。年龄为102。
但是我们对Mingming B的对话的事务感到困惑,但是我们阅读了A会议中B的修改。这似乎不是。
它在这里涉及一个问题。交易的一致性何时建立?
实际上,我们执行的开始声明不是交易的真正起点。执行开始后,将启动执行的第一个句子SQL。
让我们修改第一部分的情况:
在A会议上,交易打开后,立即执行了选择语句,然后参加B会议进行修改。修改完成后,结果也与用户一致,以在另一笔交易中多次执行相同的选择语句,并且结果始终相同。
如果我们要执行开始,我们会立即打开交易,然后我们可以通过以下方式执行它:
执行此SQL后,交易立即开始。
接下来,返回第一部分的情况,让我们修改事务的命令:
目前,会议中对交易的查询无法看到B中的修改。
好吧,一个小案例,我希望小朋友在进行实验时不应犯错误。这篇文章涉及一个称为一致性视图的概念。如果您不熟悉,则可以参考上一篇文章。