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

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

1、幻想读:事务T1读取一条指定where条件的语句,返回结果集。此时事务T2插入一行新记录,恰好满足T1的where条件。然后T1使用相同的条件再次查询,结果集中可以看到T2插入的记录,这条新纪录就是幻想。

2、不可重复读取:事务T1读取一行记录,紧接着事务T2修改了T1刚刚读取的记录,然后T1再次查询,发现与第一次读取的记录不同,这称为不可重复读。

3、脏读:事务T1更新了一行记录,还未提交所做的修改,这个T2读取了更新后的数据,然后T1执行回滚操作,取消刚才的修改,所以T2所读取的行就无效,也就是脏数据。

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

READ UNCOMMITTED 幻想读、不可重复读和脏读都允许。

READ COMMITTED 允许幻想读、不可重复读,不允许脏读

REPEATABLE READ 允许幻想读,不允许不可重复读和脏读

SERIALIZABLE 幻想读、不可重复读和脏读都不允许

Oracle数据库支持READ COMMITTED 和 SERIALIZABLE这两种事务隔离级别。所以Oracle不支持脏读

SQL标准所定义的默认事务隔离级别是SERIALIZABLE,但是Oracle 默认使用的是READ COMMITTED

设置隔离级别使用 SET TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE]

下面是oracle 设置SERIALIZABLE隔离级别一个示例:

左面是事务T1,右面是事务T2,因为T2级别为SERIALIZABLE,所以即使事务T1在提交了数据之后,事务T2还是看不到T1提交的数据,幻想读和不可重复读都不允许了。

那如何能查看到T1新增的记录呢? 上面T1和T2是并发执行,在T1执行insert的时候事务T2已经开始了,因为T2级别是SERIALIZABLE,所以T2所查询的数据集是T2事务开始前数据库的数据。即事务T1在事务T2开始之后的insert和update操作的影响都不会影响事务T2。现在重新开启一个事务T3 就可以看到T1新增的记录了。

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

1、连接到数据库,并执行第一条DML语句

2、前一个事务结束后,又输入了另一条DML语句

oracle mysql事物隔离级别_Oracle数据库事物隔离级别相关推荐

  1. mysql 事务隔离界别_MySQL数据库事务隔离级别(Transaction Isolation Level)

    然后说说修改事务隔离级别的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 1 #可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE- ...

  2. oracle往mysql数据同步存储过程_Oracle数据库之间数据同步

    源库(ENV库)中定义如下包: 包定义如下: CREATE OR REPLACE PACKAGE PKG_DATA_REPORT IS - Author : JOHNFNASH - Created : ...

  3. mysql中tonumber函数_Oracle数据库之oracle的TO_NUMBER函数

    本文主要向大家介绍了Oracle数据库之oracle的TO_NUMBER函数,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. TO_NUMBER(x [, format], [  ...

  4. oracle和mysql查询条件排序_Oracle数据库中ORDERBY排序和查询按IN条件的顺序输出

    ORDER BY非稳定的排序提一个问题: oracle在order by 排序时,是稳定排序算法吗? 发现用一个type进行排序后,做分页查询,第一页的数据和第二页的数据有重复 怀疑是order by ...

  5. 如何将mysql导出数据泵_Oracle数据库之ORACLE 数据泵导入导出数据

    本文主要向大家介绍了Oracle数据库之ORACLE 数据泵导入导出数据,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 一.摘要 在平常备库和数据库迁移的时候,当遇到大的数据库 ...

  6. oracle vm发现无效设置_Oracle数据库编译失效对象相关命令总结大全,值得收藏

    概述 在日常数据库维护过程中,我们会发现数据库中一些对象(包Package.存储过程Procedure.函数Function.视图View.同义词.....)会失效,呈现无效状态(INVALID).有 ...

  7. oracle 加载数据戽_oracle数据库数据导入导出步骤(入门)

    oracle数据库数据导入导出步骤(入门) 说明: 1.数据库数据导入导出方法有多种,可以通过exp/imp命令导入导出,也可以用第三方工具导出,如:PLSQL 2.如果熟悉命令,建议用exp/imp ...

  8. oracle mysql查询速度慢_oracle 根据时间范围查询缓慢问题排查解决

    今天生产环境上碰到个奇怪问题,在oracle数据库一个根据时间范围的查询语句居然执行了二十多分钟.一开始打印了执行sql日志之后就毫无反应了,任何错误都没有.把进程反复重启几次也一样.直到二十分钟后就 ...

  9. mysql 主键注解_oracle数据库中主键注解

    hibernate5(5)实体映射注解配置[2]主键生成策略 @GeneratedValue基本注解类型 在上一篇文章中,我们讲到了JPA使用@GeneratedValue注解来定义生成策略,而关于注 ...

最新文章

  1. 【Qt】在Qt中使用opencv,不要使用opencv创建窗口
  2. Python 编写用户登录接口
  3. 掘地三尺,我挖出了这次线上事故的元凶:Java内存泄漏!
  4. 初涉SQL Server性能问题(3/4):列出阻塞的会话
  5. oracle 远程exp导出,EXP远程导出完整Oracle数据库
  6. 再破纪录!ECCV 2020 旷视研究院15篇成果总览
  7. sftp 服务器外网访问设置
  8. 超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享...
  9. 不懂电脑如何买电脑_如何选择性价比高的电脑 买电脑要注意什么
  10. 重庆“扫黄打非”部门打掉一网络传黄团伙,查获淫秽视频11万余部
  11. RS232通信之C++实现---PC端
  12. 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
  13. 关于明星投票系统的作业分享
  14. 树莓派 之 动态DNS(DNSPod)
  15. 华人小伙在美开网店卖鞋 一年销售额超八亿
  16. 移动安全工具-apktool
  17. 斯坦福大学自然语言处理第四课“语言模型(Language Modeling)
  18. 应届生学弟苦恼:是去华为拿1万多低薪,还是去互联网自研公司拿2万多高薪?
  19. excel概率密度函数公式_用excel怎么制作概率密度图_EXCEL 正态分布公式�9�3
  20. unicast、multicast和broadcast

热门文章

  1. 用Ajax请求服务器的图片,并显示在浏览器中(转)
  2. RPC-原理及RPC实例分析
  3. Create a restful app with AngularJS/Grails(4)
  4. [emuch.net]MatrixComputations(1-6)
  5. 淘宝海量数据库之二:一致性选择
  6. Pretty Login便携版:Windows 7登录界面修改器
  7. Exchage 2007 Client Application Functions(2) -- 如何收取邮件
  8. 经典算法学习——直接选择排序
  9. Android Broadcast Receiver
  10. 怎么让BarTender对象等间距分布