首页 > 编程知识 正文

wetty湿热不能用了吗,电脑不能用手机耳机

时间:2023-05-06 10:15:42 阅读:177842 作者:3407

POSTGRESQL实际上提供了三个隔离级别,上次分析了其中序列化的隔离级别,但实际上大多数数据库都没有使用该级别。

大多数数据库的隔离级别在读提交和读两者中是选定的。 其中,repeatableread在我们的测试中,发现了几个问题。 什么情况下会发生与serializable相同的情况? (请参阅

让我们来看看以下两个实验。 都是repeatable read。 为什么结果会不同呢?

1 sessionarepeatablereadsessionbreadcommited

进行以下实验步骤(按编号顺序整理) )。

SESSION A

1

begintransactionisolationlevelrepeatableread;

2

updateemployeesetname=' Simon ' where id=1;

SESSION B

3占线;

4 updateemployeesetname='2' where id=1

(语句未执行的等待状态)

SESSION A

5commit;

SESSION B

序列号6成功操作

具体结果请参阅下图的SESSION A

SESSION B

结果与大多数网站上介绍的repeatable read结果一致。 他们要求的结果是防止幻读。

但实际上上面的测试有一个漏洞。 进行实验2

正在重试上述操作

SESSION A

SESSION B

知道结果。 结果和上面的不一样。 SESSION B无法直接回滚commit进程b。 哪里出了问题。

各位,请关注SESSION B的第一行

begintransactionisolationlevelrepeatableread;

上面的两个实验能告诉我什么? 是什么? 是什么? 是什么? 是什么? 是什么?

如果在POSTGRESQL中将事务的隔离级别调整为repleatable read;

在某个时刻你的事务会变成序列化,也就是序列化。

(具体来说,看前几天关于可串行化的实验结果)

那为什么,试着分析一下吧

为什么两个进程都有可能在REPEATABLE READ DML的同一行上序列化

REPEATABLE READ主要需要完成哪些任务,以防止幻读

在进程a占有了ID=1的行之后,该行的信息被锁定,将来要防止b进程修正该行的数据,读取该行的数据要在b修正了之后,a必须防止b修正该行的数据,序列化的概念

SESSION A

SESSION B

因此,大多数实际的internet示例在READ COMMIT中生成REPATEABLE READ的结果,而不是将系统调整为REPATEABLE READ的结果。 通过将POSTGRESQL数据库调整为REPATABLE READ,可以大大提高事务回滚的概率。 因此,该实验明确告知大部分用户,POSTGRESQL建议在没有特殊需求的情况下也适合使用READCOMMIT,POSTGRESQL的默认安装后隔离级别也是READCOMMIT

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。