READ COMMITTED

READ COMMITTED这是数据库默认的隔离级别。它能保证你不能读取那张表格数据,只要有其它事务还在改变这张表格数据。可是,因为sql server在select操作的时,锁表格时间就那么一小会儿,如果一个事务在READ COMMITTED级别下重复读数据,这样那个数据可能还是会变,或者新的行可能出现并且还是满足了原来的查询条件,能查询到。你以为还是原来的那些数据,其实又有新的内容在里面了。

READ COMMITTED有两个地方要注意。第一,它能阻止 dirty reads,但是第二,它还是允许non-repeatable reads和phantom reads.

第一点阻止 dirty reads,举个例子,

-- Step 1:

-- Start a transaction but don't commit it

USE IsolationDB ;

GO

BEGIN TRAN

UPDATE IsolationTest

SET col2 = 'New Value' ;

-- 更新了数据,但未结束事务,事务还在影响这张表格。

-- Step 2:

-- Start a new connection and change your isolation level

USE IsolationDB ;

GO

SET TRANSACTION ISOLATION LEVEL READ COMMITTED ;

SELECT *

FROM IsolationTest ;

--

-- You should notice that the process blocks, and returns

-- no data or messages!

在READ COMMITTED级别下读取。你注意到过程是堵塞的,不能返回数据,因为有一个修改事务影响着。

-- To finish up, perform the following two steps:

-- Step 3:

-- Return to the connection from Step 1 and issue a ROLLBACK

ROLLBACK TRANSACTION ;

-- 回滚事物喽。

-- Step 4:

-- Rerun the SELECT statement in the connection from Step 2

SELECT *

FROM IsolationTest ;

--

-- Verify that the data is available 可以显示数据了。只不过是原来的数据。

这个就不像READ UNCOMMITTED还能读取。

看一下READ COMMITTED第二点,non-repeatable reads,举个例子。

先关闭全部的查询窗口。打开两个新的查询窗口。

-- Step 1:

-- Read data in the default isolation level

USE IsolationDB

SET TRANSACTION ISOLATION LEVEL READ COMMITTED ;

BEGIN TRAN

SELECT AVG(col1)

FROM IsolationTest ;

-- 第一步,设置了默认的隔离级别,开始一个事务来读取平均值,

-- Step 2:

-- In a new connection, update the table:

USE IsolationDB ;

UPDATE IsolationTest

SET col1 =500

WHERE col1 =50 ;

-- 第二步,更新了表格。假设第一步已经结束了,那么第二步的将会更新成功,即使第一步的连接还是在事务里。这个UPDATE是一个自动提交的事务,所以SQL server会锁住它,一旦提交完成又自动释放它。

-- Step 3:

-- Go back to the first connection and

-- run the same SELECT statement:

SELECT AVG(col1)

FROM IsolationTest ;

-- 第三步,再次执行查询语句,平均值就变了,这就是一个non-repeatable read。默认的READ COMMITTED隔离级别能阻止正在读取的数据被改变,但是仅仅指的是正在被读取的数据被改变。一旦这个读取操作结束了,那么其它的事务就能改变数据,即使读取操作所在的那个事务还打开着,没有提交结束。结果就是,也不能保证我们能取得一样的数据。

linux事务隔离级别,事务的隔离级别(Transaction isolation levels)2相关推荐

  1. 数据库操作的隔离级别 Transaction Isolation Levels

    by yan 20220223 ANSI/ISO Transaction Isolation Levels(ANSI/ISO标准的隔离级别) (1)未提交读(read uncommitted) (2) ...

  2. 事务的隔离级别(Transaction isolation levels)5

    2019独角兽企业重金招聘Python工程师标准>>> SERIALIZABLE隔离级别可以确保,如果一个查询语句多次执行,不会有数据改变.换句话说,在一个事务里执行相同的查询语句两 ...

  3. java 事务_Java中事务总结详解(精华)

    1.什么是JAVA事务? 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (is ...

  4. mysql事务的隔离c_Mysql事务处理与隔离级别 -cyy

    生产环境中事务的应用场景: 事务是多个数据库操作的集合,该集合内必须所有的数据库操作完成,事务才能完成,只要有一个操作失败,事务就不会成功,之前成功的数据库操作会进行回滚以保证事务的完整性不会遭到破坏 ...

  5. MySQL 学习笔记(9)— 事务控制语句、事务属性以及并发和隔离级别

    1. 事务概念 事务处理(transaction processing)可以用来维护数据库的完整性,它保证成批的 MySQL 操作要么完全执行,要么完全不执行. 下面是关于事务处理需要知道的几个术语: ...

  6. 数据库事务的四大特性和隔离级别

    数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么全部执行,要么全部都不执行. 一个逻辑工作单元要成为事务,必须满足事务的四大特性(ACID).即 ...

  7. 事务的传播行为和隔离级别[transaction behavior and isolated level]

    Spring中事务的定义: 一.Propagation : key属性确定代理应该给哪个方法增加事务行为.这样的属性最重要的部份是传播行为.有以下选项可供使用: PROPAGATION_REQUIRE ...

  8. mysql isolation level_MySQL数据库事务隔离级别(Transaction Isolation Level)

    今天在学习JDBC的时候看到了关于MySql的事务的隔离级别的问题,感觉内容挺高级的,所以记录一篇文章,以备后面使用. 数据库隔离级别有四种,应用<高性能mysql>一书中的说明: 然后说 ...

  9. Mysql的事务事务的特征事务的隔离级别

    目录 事务 事务的(ACID)特征 事务的隔离级别 事务 事务的概念: 事务(Transaction)是数据库区别于文件系统的重要特性之一,事务就是用户定义的一系列执行SQL语句的操作, 这些操作要么 ...

最新文章

  1. 从SeekFree的Gitee开源库建立通用MM32开发模板
  2. Apache Camel框架之事务控制
  3. Leet Code题解 - 1559. Detect Cycles in 2D Grid 检测二维无向图中的环
  4. [Err] ORA-00979: not a GROUP BY expression
  5. mingw64 下 java_在 Windows 10 64 位下安装 Mingw-w64
  6. unity3d学习笔记(一)-在一个GameObject上进行多个AudioSource的控制
  7. SAP NetWeaver
  8. 【华为云 ModelArts-Lab AI实战营】第三期:图像分类 (III) 模型参数网络调优
  9. c++输入一个整数判断是否为完全平方数_[leetcode/lintcode 题解] 谷歌面试题:完美平方...
  10. java架构师之路:推荐的15本书
  11. 28. magento使用细节
  12. 【洛谷P1801】黑匣子_NOI导刊2010提高(06)(权值线段树裸题+模拟)
  13. 在UOS(deepin)系统下安装CPUS-PDF虚拟PDF打印机的方法
  14. 电脑怎么录制玩王者荣耀的过程
  15. ios审核新坑解决,因为需要访问相机权限被拒绝We noticed that your app requests the user’s consent to access their camera
  16. INS 图片/视频保存
  17. Postman请求报405错误
  18. 程序员《周易》入门一
  19. 线上tomcat服务器假死排查
  20. JULIA学习材料合集

热门文章

  1. 将字符串中的空格用%20替换
  2. C++小型公司管理系统
  3. UVa272-TeX中的引号
  4. 【C++ Priemr | 15】虚函数常见问题
  5. Redis高级项目实战,java配置jdk环境时
  6. 浪里个浪 FZU - 2261
  7. Codeforces Round #444 (Div. 2) C.Solution for Cube 模拟
  8. java 生成二维码
  9. 安装Ubuntu版本linux过程中没有提示设置root用户密码问题的解决办法
  10. ASP .NET MVC 之Entity Framework入门教程及源码