数据管理系统-week9-SQL中的事务处理


前言

这次课给大家介绍三大现象有脏读现象,不可重复读,与幻像现象。同时给大家介绍四种隔离水平,并且如何设置隔离级别


一、三大现象

脏读现象

读取操作可以访问脏数据,即由未提交的事务写入的数据,如下图所示,步骤二的事务并没有提交。
在这里插入图片描述

不可重复的读取现象

单个事务对同一数据的不同读取将是不可重复的,即它们可能返回不同的值,如下图所示,一开始查询预算为2000,最后查询预算变成了3000。我们可以看到前后数据内容不一致的现象。
在这里插入图片描述

幻象想象(Phantom phenomenon)

这个概念可能有点不好理解,事务读取一次的一组行可能与事务尝试再次读取时的一组行不同。简单来说就是前面读取的数据数量跟后面不一样,🧨🧨🧨注意是数据的数量,而不是内容!如下图所示:

在这里插入图片描述

二、隔离水平

SQL的ANSI标准为数据库事务的处理提供了四个级别的隔离,隔离级别是根据几种可能的现象或奇怪难以解释的操作发生来定义的。

四种隔离等级:

  • 读取未提交(READ UNCOMMITTED)
    在读取未提交的隔离级别,事务可能显示:脏读现象,不可重复读现象,幻象现象
  • 读取已提交(READ COMMITTED)
    在读取已提交的隔离级别,事务可能显示:不可重复读现象,幻象现象
  • 可重复读取(REPEATABLE READ)
    在可重复读取的隔离级别,事务可能显示:幻象现象
  • 可序列化的(SERIALIZABLE)
    在可序列化的隔离级别,事务不会显示任何现象

三、设置隔离级别

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

可序列化隔离级别

这里的单独说一下可序列化隔离级别,如果运行在可序列化隔离级别上的事务T,如果开始尝试更新或删除进行的事务T,那么系统将中止事务T。
如果一个可序列化的事务失败,则可以:

(1)提交迄今为止已处理的工作
(2)处理附加的(但不同的)语句
(3)回滚整个事务

参考文献

Elmasri R., Navathe S., Fundamentals of Database Systems, 6th edition, chapter 21.6 Transaction Support in SQL, pp. 774-776


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI敲代码的手套

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

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

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

打赏作者

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

抵扣说明:

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

余额充值