oracle mysql事物隔离级别_Oracle数据库事物隔离级别
事务隔离级别:一个事务对数据库的修改与并行的另一个事务的隔离程度。
两个并发事务同时访问数据库表相同的行时,可能存在以下三个问题:
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数据库事物隔离级别相关推荐
- mysql 事务隔离界别_MySQL数据库事务隔离级别(Transaction Isolation Level)
然后说说修改事务隔离级别的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 1 #可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE- ...
- oracle往mysql数据同步存储过程_Oracle数据库之间数据同步
源库(ENV库)中定义如下包: 包定义如下: CREATE OR REPLACE PACKAGE PKG_DATA_REPORT IS - Author : JOHNFNASH - Created : ...
- mysql中tonumber函数_Oracle数据库之oracle的TO_NUMBER函数
本文主要向大家介绍了Oracle数据库之oracle的TO_NUMBER函数,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. TO_NUMBER(x [, format], [ ...
- oracle和mysql查询条件排序_Oracle数据库中ORDERBY排序和查询按IN条件的顺序输出
ORDER BY非稳定的排序提一个问题: oracle在order by 排序时,是稳定排序算法吗? 发现用一个type进行排序后,做分页查询,第一页的数据和第二页的数据有重复 怀疑是order by ...
- 如何将mysql导出数据泵_Oracle数据库之ORACLE 数据泵导入导出数据
本文主要向大家介绍了Oracle数据库之ORACLE 数据泵导入导出数据,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 一.摘要 在平常备库和数据库迁移的时候,当遇到大的数据库 ...
- oracle vm发现无效设置_Oracle数据库编译失效对象相关命令总结大全,值得收藏
概述 在日常数据库维护过程中,我们会发现数据库中一些对象(包Package.存储过程Procedure.函数Function.视图View.同义词.....)会失效,呈现无效状态(INVALID).有 ...
- oracle 加载数据戽_oracle数据库数据导入导出步骤(入门)
oracle数据库数据导入导出步骤(入门) 说明: 1.数据库数据导入导出方法有多种,可以通过exp/imp命令导入导出,也可以用第三方工具导出,如:PLSQL 2.如果熟悉命令,建议用exp/imp ...
- oracle mysql查询速度慢_oracle 根据时间范围查询缓慢问题排查解决
今天生产环境上碰到个奇怪问题,在oracle数据库一个根据时间范围的查询语句居然执行了二十多分钟.一开始打印了执行sql日志之后就毫无反应了,任何错误都没有.把进程反复重启几次也一样.直到二十分钟后就 ...
- mysql 主键注解_oracle数据库中主键注解
hibernate5(5)实体映射注解配置[2]主键生成策略 @GeneratedValue基本注解类型 在上一篇文章中,我们讲到了JPA使用@GeneratedValue注解来定义生成策略,而关于注 ...
最新文章
- 【Qt】在Qt中使用opencv,不要使用opencv创建窗口
- Python 编写用户登录接口
- 掘地三尺,我挖出了这次线上事故的元凶:Java内存泄漏!
- 初涉SQL Server性能问题(3/4):列出阻塞的会话
- oracle 远程exp导出,EXP远程导出完整Oracle数据库
- 再破纪录!ECCV 2020 旷视研究院15篇成果总览
- sftp 服务器外网访问设置
- 超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享...
- 不懂电脑如何买电脑_如何选择性价比高的电脑 买电脑要注意什么
- 重庆“扫黄打非”部门打掉一网络传黄团伙,查获淫秽视频11万余部
- RS232通信之C++实现---PC端
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
- 关于明星投票系统的作业分享
- 树莓派 之 动态DNS(DNSPod)
- 华人小伙在美开网店卖鞋 一年销售额超八亿
- 移动安全工具-apktool
- 斯坦福大学自然语言处理第四课“语言模型(Language Modeling)
- 应届生学弟苦恼:是去华为拿1万多低薪,还是去互联网自研公司拿2万多高薪?
- excel概率密度函数公式_用excel怎么制作概率密度图_EXCEL 正态分布公式�9�3
- unicast、multicast和broadcast
热门文章
- 用Ajax请求服务器的图片,并显示在浏览器中(转)
- RPC-原理及RPC实例分析
- Create a restful app with AngularJS/Grails(4)
- [emuch.net]MatrixComputations(1-6)
- 淘宝海量数据库之二:一致性选择
- Pretty Login便携版:Windows 7登录界面修改器
- Exchage 2007 Client Application Functions(2) -- 如何收取邮件
- 经典算法学习——直接选择排序
- Android Broadcast Receiver
- 怎么让BarTender对象等间距分布