Transaction Processing in ANSI SQL

  • 脏读现象(Dirty read phenomenon)
  • 不可重复读现象(Non-repeatable read phenomenon)
  • 幻影读现象(Phantom phenomenon)
  • 隔离级别(Isolation levels)
  • 隔离级别的设置
  • References

脏读现象(Dirty read phenomenon)

A transaction reads uncommitted data created by a transaction that fails later on.
举个例子:

--Transaction 1          Transaction 2SELECT budgetFROM DEPARTMENTWHERE name = 'SALES';2000
UPDATE DEPARTMENT
SET BUDGET = BUDGET + 1000
WHERE NAME = 'Sales';SELECT budgetFROM DEPARTMENTWHERE name = 'SALES';3000
ROLLBACK;

不可重复读现象(Non-repeatable read phenomenon)

事务几次读取相同的数据项,然而每次读数据项都有不同的值。
举个例子:

--Transaction 1          Transaction 2SELECT budgetFROM DEPARTMENTWHERE name = 'SALES';2000
UPDATE DEPARTMENT
SET BUDGET = BUDGET + 1000
WHERE NAME = 'Sales';
COMMIT;SELECT budgetFROM DEPARTMENTWHERE name = 'SALES';3000

幻影读现象(Phantom phenomenon)

事务多次计算同一个表中的总行数,每次总行数都不相同。
举个例子:

--Transaction 1          Transaction 2SELECT count(*)FROM DEPARTMENT20
DELETE DEPARTMENT
WHERE NAME = 'Sales';
COMMIT;SELECT count(*)FROM DEPARTMENT19

我在 PL/SQL做了一个触发幻影读现象的项目练习,可以进行参考学习:
https://blog.csdn.net/Jifu_M/article/details/112494666

隔离级别(Isolation levels)

SQL为数据库事务提供了四个级别的隔离.
隔离级别等同于正确性级别.
以下是ANSI SQL中定义的4种隔离级别:
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
隔离级别被所谓的术语现象所定义(phenomena)。
考虑以下现象:
Dirty read phenomenon
Non-repeatable read phenomenon
Phantom phenomenon
下图位隔离级别与现象的关系:

从图中可以清楚的看到4种隔离级别从弱到抢的变化。
在最高级别的SERIALIZABLE,所有的现象都不会再发生。

隔离级别的设置

在ANSI SQL中,我们应该使用以下代码设置隔离级别:

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

References

  1. Elmasri R. and Navathe S. B., Fundamentals of Database Systems, Chapter 20.6 Transaction Support in SQL, 7th ed., The Pearson Education Ltd, 2017.

数据库系统之ANSI SQL中的事务处理相关推荐

  1. SQL Server在存储过程中编写事务处理代码的三种方法

    SQL Server中数据库事务处理是相当有用的,鉴于很多SQL初学者编写的事务处理代码存往往存在漏洞,本文我们介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正确的代码.希望能够对您有所 ...

  2. MSSQL之一 数据库系统简介 与SQL Server 2008概述

    前   言 SQL的全称是结构化查询语言(Structured Query Language),它是关系数据库中最常用的语言.SQL不仅可以管理数据库中的数据,而且可以管理关系数据库本身.为了避免各数 ...

  3. oracle中nvarchar,SQL中的Nvarchar在oracle中用作varchar2

    我听说过Oracle中的varchar2 emp_name varchar2(10)如果输入的值小于10,则剩余空间将被自动删除 在SQL中我们如何实现这一目标. 通过使用nvarchar,我们可以在 ...

  4. 关于sql中case when的用法

    Oracle CASE WHEN 用法介绍 1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...

  5. transactionscope 中的异步 处理 异常_.NET Core中TransactionScope事务处理方法介绍及注意事项...

    作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.html 今天在写CzarCms的UnitOfWork的使用使用到了这个Transacti ...

  6. 什么是存储过程?什么是触发器?SQL中存储过程与触发器的区别是什么?

    什么是存储过程?什么是触发器?SQL中存储过程与触发器的区别是什么? 存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名 ...

  7. SQL中的join操作总结(非常好)

    1.1.1 摘要 Join是关系型数据库系统的重要操作之一,SQL Server中包含的常用Join:内联接.外联接和交叉联接等.如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的 ...

  8. SQL中的left outer join,inner join,right outer join用法

    使用关系代数合并数据 1 关系代数 合并数据集合的理论基础是关系代数,它是由E.F.Codd于1970年提出的. 在关系代数的形式化语言中: ?          用表.或者数据集合表示关系或者实体. ...

  9. 3.1 《数据库系统概论》SQL概述及数据定义(模式SCHEMA、表TABLE、索引INDEX)

    文章目录 0.前言 1.思维导图 2.SQL概述 (1)什么是SQL? (2)SQL的特点 (3) SQL的基本概念 3.数据字典 4.数据定义 (1)数据定义概览 (2)模式的定义与删除---SCH ...

  10. SQL中的left outer join,inner join,right outer join用法详解1

    LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行. LEFT JOIN 关键字语法 SELECT column_ ...

最新文章

  1. BZOJ1002 [FJOI2007]轮状病毒(最小生成树计数)
  2. 营销3.0时代的营销特征
  3. 修理机器人基维斯_魔兽世界修理机器人沃尔特和移动邮箱怎么做
  4. 页面生成周期中的两个Application池的详情小弟了解
  5. fork linux 低权限,linux/Unix下python的fork详解及应用举例
  6. 高性能mysql_事务及4种隔离级别
  7. 【python】hashlib.shasha256练习注册 --笔记
  8. html表格ui,table表格 - 基础 - H-ui前端框架官方网站
  9. 第九章 国际化、帮助系统和Qt插件
  10. 调试人脸识别 无cpu版本出现的问题
  11. linux查看网络静态ip配置文件,linux 配置静态ip地址
  12. 【01月16日】【精彩电影合集】【10部】【亲测】【Lsyq5647发布】
  13. java时间戳的单位_java – SimpleDateFormat – 解析时间戳,以毫秒为单位
  14. 《游戏制作人手册》读书笔记
  15. 搞懂朴素贝叶斯分类算法
  16. 大学计算机考试word实操夏威夷,计算机一级等级考试操作题WORD(4页)-原创力文档...
  17. 「倍轻松」要上科创板,按摩器为什么总要和科技沾点边?
  18. CSMA/CD 简要介绍
  19. win7计算机变成英文,我的win7开机选项变成了英文怎么处理
  20. 2.4gwifi能跑满100m宽带吗_100M以上宽带实测不到40M?四步教你排查元凶!

热门文章

  1. 全球市场喷干水果粉市场销售规模及投资盈利预测报告(新版)2022年
  2. 万字综述 | 一文读懂知识蒸馏
  3. 《信息安全系统设计基础》实验三 《实时系统的移植》 问题总结
  4. D4.8 Write transactions
  5. quartz各表作用讲解
  6. 无线ap 热图测试软件,无线AP功能测试
  7. IDEA 重复执行 updating indices问题
  8. SNMP——使用MIB-Browser 并编写 MIB库
  9. 中北计算机组成原理期末,中北大学《计算机组成原理》选择题和填空题试题大集合(含答案).pdf...
  10. mac插网线不能上网_苹果笔记本连接网线不能上网怎么回事