PostgreSQL教程(九):介绍的东西

PostgreSQL教程(九):介绍的东西
在SQL标准中,事物的分离级别分为四种类型

1。读取未提交的(未提交读)

2。已提交阅读(读取提交)

三.可重复读(可重复读)

4。序列化(序列化)

然而,在9.1版本之前,PostgreSQL只实现其中的两个,即读已提交和序列化。如果其他两个是在实际应用中选择,PostgreSQL将自动调整到一个更严格的隔离级别。在PostgreSQL v9.1版本三的实现提供,即重复添加数据在原有的基础上,在这个博客,我们将解释只有2和4之间的比较),因为9.1的差异,3和4是非常小的。

已提交读
序列化
PostgreSQL的默认隔离级别


其他事物是否不提交数据是可见的。
看不见的
看不见的
执行效率
高的
低的
适用场景
简单的SQL逻辑,如果嵌套查询包含在SQL语句中,那么在多个SQL查询中获取不同版本的数据是非常可能的。
复杂的SQL逻辑,特别是嵌套查询,更适用。
选择查询一致性时间点
从SELECT查询的执行开始,查询执行阶段,根据查询结果集数据操作的任何其他并发事务都不会是查询读取,查询数据版本是一致的执行开始于查询数据版本。
根据查询开始的选择查询,在执行查询时,根据查询结果集数据操作的任何其他并发事务都不会是查询读取,查询数据版本与开始查询数据版本的位置一致。
同事对象中的数据操作是否可见
例如,在同一个事件中,内存中有更新和选择操作。即使当前的东西还没有提交,更新所做的修改仍然可见于选择当前的东西后面。
它和读的一样。
同事对象中相同选择的数据是否相同
对选择的一致性,不同的时间点是在查询执行的开始时间,和多个查询点肯定是不一样的,如果在第一个查询到第二查询开始修订并提交与其他事物之间或事物只修改查询得到的数据,然后将数据操作的结果将反映在第二查询。
有两个步骤要采取。对于同一件事在一个修改,如果它发生在两个查询,第二查询会看到这些变化的结果。然而,会有其他并发的东西,修改,没有影响,这两种选择的结果是相同的。原因很明显,选择的时间点的一致性该隔离级别是一致的与事物的开始。
对同一行数据的修改
如果在修改同一行的两个并行的东西,修改首先要银行级别的锁,另一件将进入等待状态,直到第一个电话那端的操作。如果第一次手术改良线最终被回滚,第二修改操作将修改数据直接的等待结束后。但是,如果第一个操作正常提交,那么我们需要进一步确定操作的类型。如果删除(删除)行,则第二个修改操作将被忽略。如果它是更新行的记录,则第二次修改操作需要重新评估该行是否仍然与先前定义的修改条件一致。
读已提交机制隔离水平基本相同,只在第一次手术后提交的修改操作将不再区分在修改删除或更新,而是直接返回以下信息:错误:无法序列化由于并发更新访问。因为序列化的交易无法启动被改变或被另一个事务更改锁定后,它是一个可序列化事务。因此,当应用程序接收到这样的错误信息,它应该退出当前事务并重新启动整个交易从一开始,在一个应用程序,你也应该有处理这种类型的错误的必要的代码。

最后,需要说明的是,在绝大多数情况下,读取提交等级可以应用,和并行效率水平较高。只有在比较特殊的情况,目前的隔离级别手动调整序列化或重复。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部