当前位置:首页 > 日记 > 正文

Oracle数据库事务隔离级别

Oracle数据库事务隔离级别
当两个并发事务访问同一行数据库表时,可能存在三个问题:

1。幻想读:事务T1读取语句指定的地点条件并返回结果集。在这一点上,事务T2插入新的一行记录,这恰好满足T1,T1是查询条件。然后再以同样的条件和结果集可以看到T2插入记录,新的记录是幻想。

2,不要重复读取:事务t1读取一行记录。然后事务T2修改t1刚刚读取的记录。然后t1再次查询,发现它与第一读记录不同,称为不可重复读。

3、脏读:事务t1更新行记录,并且未提交修改。T2读取更新的数据,然后T1执行回滚操作,取消刚才的修改,所以T2读取的行是无效的,即脏数据。

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

不允许读,用于幻想、不重复和脏读。会话可以读取未提交的其他事务的更新结果。如果事务以回滚结束,则读取结果可能不正确,因此大多数数据库不使用此隔离级别。

已提交读允许幻读,不反复阅读,并且不允许脏读。更新的结果,一个会话只能读取其他事务已提交或等待,但其他会话可以修改这个交易记录,而不必等待事务结束,显然,在这种隔离级别,两个相同的读操作的交易,结果可能是不同的。

可重复读让幻想来读,读不准,反复和肮脏。在交易中,如果没有记录添加操作两个读操作条件相同的情况下,没有其他更新操作之间,记录增加查询条件下的数量,所以两读的结果是一样的。换句话说,它是记录,是看在交易的第一时间确保不发生变化,这在transaction.sql服务器在整个事务读取记录锁实现这种隔离级别,因此,在交易结束前会议记录不能被其他事务修改,只能等待最后的成交,但SQL Server将不会阻止其他的研究记录添加到表中,也不妨碍其他修改其他会话记录。

序列化的幻想阅读,反复阅读和脏读是不允许的。在一个事务中,读操作的结果记录,其他交易的交易开始前提交。SQL Server通过加锁表的整个交易过程中实现隔离级别。该隔离级别下,餐桌上的所有DML操作是不允许的,那就是,等待交易完成。这保证了两个读操作的结果在一个事务中必须相同。默认的事务隔离级别由SQL标准定义的可串行化。

二、Oracle中的隔离级别和实现机制:

Oracle数据库支持读取和序列化的两种事务隔离级别。因此,Oracle不支持脏读,即Oracle不允许会话阅读其他事务未提交的数据修改的结果,从而防止不正确的阅读由于事务回滚。

在Oracle回滚段,当数据记录进行修改,在修改记录的结果存储在回滚段或撤销部分。Oracle的读操作不会阻碍更新操作,更新操作将不会阻碍读操作,所以在甲骨文不同的隔离级别下,读操作不会等待更新的交易结束,更新操作也不会因为另一个事务读取操作等优势,这是Oracle事务。

Oracle读取的默认隔离级别(又称此语句中的隔离级别),隔离级别,如果交易是在一个表执行DML操作,然后另一个会话表中的记录进行读操作,则Oracle将读取或更新存储之前回滚段回滚段记录,不SQL为结束交易服务器更新。

Oracle SERIALIZABLE隔离级别(也称为事务隔离等级),读操作在交易只能读交易前开始提交数据结果。如果在阅读,其他事务对记录的修改,原来的未修改的甲骨文将记录在回滚段或撤销段中找到对应的(但之前的交易开始读取操作的记录存储在回滚或撤销),然后读操作不会因为相应的记录在等待更新。

使用SETTRANSACTIONISOLATIONLEVEL {未提交读|读取|可重复读|序列化设置隔离级别}

以下是Oracle设置SERIALIZABLE隔离级别的实例。
左侧和右侧交易T1,T2是交易,因为T2水平是可序列化的,所以即使事务T1提交的数据,事务T2依然看不到T1提交的数据,幻想和不可重复读是不允许的。

那么我们怎样才能看到T1的新记录呢t1和T2是并行执行。当T1执行插入,事务T2已经开始,因为T2水平是可序列化的,所以数据查询是数据库中的数据通过T2 T2交易开始前,即在插入和更新操作的事务T1 T2开始交易后的影响不会影响事务T2。现在重启交易T3,你可以看到新的T1记录。

当下列事件发生时,业务开始:

1,连接数据库,并执行第一个DML语句
2。以前的交易后,进入了另一个DML语句。

相关文章

linux环境变量设置方法介绍

linux环境变量设置方法介绍

方法,环境变量设置,电脑软件,linux,注释:当在Linux下设置环境变量时,如果您只是临时使用它,您可以在shell下直接使用set或导出命令设置环境变量。如果您希望每次打开或打开shell时都自动设置此环境变量,则不需要在任何时候手动设置该环境变量。…

Destoon常见的安全设置的概述

Destoon常见的安全设置的概述

设置,常见,电脑软件,Destoon,安装的系统系统后,我们需要对网站的安全着想做一些安全设置,使系统不易被熏黑。destoon系统通常有以下步骤需要操作安全。 1。方正密码安全设置 该系统的创建者具有最高权限,所以我们需要设置一个复杂的密码,如字…

PHPExcel阅读器将excel内容读入数

PHPExcel阅读器将excel内容读入数

数据库,阅读器,代码,内容,电脑软件,文章最后介绍了利用excel阅读器读取excel文件的方法,如excel等数据的需要: -数据库:校友 -表的结构'校友' 如果不存在,创建表(校友) ` ID ` bigint(20)不为空auto_increment, ` GID ` varchar(20)默认为空的文…

gcasswupdater.exe的功能是什么该g

gcasswupdater.exe的功能是什么该g

查询,功能,过程,电脑软件,gcasswupdater,点评:gcasswupdater.exe是巨人 /微软反间谍软件相关程序 进程文件:gcasswupdater或gcasswupdater.exe 进程名称:微软反间谍软件更新过程 过程类别:安全风险的过程 英文描述: gcasswupdater.exe是一个过…

PHP的面向对象编程(OOP)的学习笔记(四

PHP的面向对象编程(OOP)的学习笔记(四

异常处理,面向对象编程,学习笔记,发生,电脑软件,使用异常 PHP5添加异常处理模块类似于其他语言,PHP代码生成异常可以抛出由catch语句的语句和捕获。代码需要例外处理必须放在try代码块捕获例外。每个尝试对应至少一个catch块。使用多个catc…

最好超过20的MySQL性能优化经验分

最好超过20的MySQL性能优化经验分

经验分享,性能优化,电脑软件,MySQL,我们设计的数据库表结构时,我们需要注意数据操作的性能当我们操作数据库(特别是在查询的SQL语句)。在这里,我们不谈太多关于SQL语句的优化,但只有MySQL,Web应用最广泛的数据库。我希望下面的优化技术对你有用。…

无法登录QQ提示服务器超时,错误代码

无法登录QQ提示服务器超时,错误代码

超时,服务器,提示,无法登录,错误代码,问题: 近年来,计算机网络是正常的,就是不能登陆QQ。当你登录QQ,提示你服务器超时,错误代码0x00000001 的原因是什么 答案uff1a 计算机网络正常,表明网络连接正常,网络设置正常,出现上述现象,原因如下: 如果是…

Linux用户管理和组管理使用详细的

Linux用户管理和组管理使用详细的

图形化,用户管理,解决方案,创建用户,详细,点评:本文主要介绍linux用户管理和组管理(图形化linux创建用户和组),有需要的朋友可以参考下。 有Linux下的三类用户:1、超级用户:根具有操作系统的所有权限的UID 0 2、普通用户:普通用户的操作系统权限…

我回忆并回忆起一切都有你的记忆。

我回忆并回忆起一切都有你的记忆。

一切都,回忆起,记忆,电脑软件,亲爱的,我不做永远,但永远不会忘记。 亲爱的,我不是Haikudanlan的,就在你身边。 回忆是无形的月光,一只眼睛闭上黑暗。 城市是一个听不见的大海,当它转过身时,它独自一人坠落。 黑人和白人的承诺还没有得到遗憾。…

MySQL无符号使用和减去补码溢出解

MySQL无符号使用和减去补码溢出解

溢出,解决方案,补码,符号,电脑软件,无符号是一个非负数,这种类型可以增加数据的长度。 例如,如果字段的最大值是127,那么字段符号最大可以达到127×2 无符号的属性是唯一的整数,和二进制属性仅用于CHAR和VARCHAR。 类型 解释 TINYINT 非常小的…

计算机名称修改后oracle正常启动问

计算机名称修改后oracle正常启动问

启动,修改,名称,电脑软件,oracle,不久前,在旁边的老姐安装了甲骨文,发现老姐的电脑名字很长,不容易记住,而且一个寿阳,电脑名字稍微改了一点,没想到这一步可以苦破一个老人,一个悲剧就要开始了! U3000 当你改变计算机名称并重新启动计算机,发现甲骨…

winhlp32.exe-过程的程序是什么

winhlp32.exe-过程的程序是什么

过程,程序,电脑软件,exe,综述:简要介绍了winhlp32.exe -程序过程 进程文件:程序或winhlp32.exe 过程名称:微软Windows帮助 过程类别:安全风险的过程 英文描述: winhlp32.exe是微软Windows帮助文件查看器。这个过程打开了进程,也称为第一、第二…