PostgreSQL 事务隔离级别

本文详细介绍了PostgreSQL的四种事务隔离级别:读未提交、读已提交、可重复读和可序列化,以及各个级别下防止的现象,如脏读、不可重复读和幻读。通过实验展示了在不同隔离级别下的数据读取情况,强调了可重复读级别在PostgreSQL中不会出现幻读现象。最后提到了如何通过SET TRANSACTION命令设置事务隔离级别。
摘要由CSDN通过智能技术生成

PostgreSQL 事务隔离级别

隔离级别定义

SQL标准定义了四种隔离级别。最严格的是可序列化,其中说到一组可序列化事务的任意并发执行被保证效果和以某种顺序一个一个执行这些事务一样。其他三种级别使用并发事务之间交互产生的现象来定义。

在各个级别上被禁止出现的现象是:

脏读:
一个事务读取了另一个并行未提交事务写入的数据。

不可重复读:
一个事务重新读取之前读取过的数据,发现该数据已经被另一个事务(在初始读之后提交)修改。不可重复读真正含义应该包含虚读和幻读。所谓的虚读,也就是大家经常说的不可重复读,是指在数据库访问中,一个事务范围内两个相同的查询却返回了不同数据。这是由于查询时系统中其他事务修改的提交而引起的。比如事务T1读取某一数据,事务T2读取并修改了该数据,T1为了对读取值进行检验而再次读取该数据,便得到了不同的结果。

一种更易理解的说法是:在一个事务内,多次读同一个数据。在这个事务还没有结束时,另一个事务也访问该同一数据。那么,在第一个事务的两次读数据之间。由于第二个事务的修改,那么第一个事务读到的数据可能不一样,这样就发生了在一个事务内两次读到的数据是不一样的,因此称为不可重复读,即原始读取不可重复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道知极限编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值