首页 > 学院 > 开发设计 > 正文

PG数据库事务隔离级别

2019-11-08 20:39:22
字体:
来源:转载
供稿:网友

事务隔离级别:一个事务对数据库的修改与并行的另一个事务的隔离程度。

两个并发事务同时访问数据库表相同的行时,可能存在以下三个问题:

脏读(dirty read):事务T1更新了一行记录,还未提交所做的修改,这个T2读取了更新后的数据,然后T1执行回滚操作,取消刚才的修改,所以T2所读取的行就无效,也就是脏数据。幻读(phantom read):事务T1读取一条指定where条件的语句,返回结果集。此时事务T2插入一行新记录,恰好满足T1的where条件。然后T1使用相同的条件再次查询,结果集中可以看到T2插入的记录,这条新纪录就是幻想。不可重复读取(nonrepeatable read):事务T1读取一行记录,紧接着事务T2修改了T1刚刚读取的记录,然后T1再次查询,发现与第一次读取的记录不同,这称为不可重复读。序列异常(serialization anomaly):同时成功提交一批事务的结果,每次执行会不一样。

为了处理这些问题,SQL标准定义了以下几种事务隔离级别

Isolation Level Dirty Read Nonrepeatable Read Phantom Read Serialization Anomaly
Read uncommitted Allowed, but not in PG Possible Possible Possible
Read committed Not possible Possible Possible Possible
Repeatable read Not possible Not possible Allowed, but not in PG Possible
Serializable Not possible Not possible Not possible Not possible

PG 默认的事务隔离级别是Read committed


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表