oracle事务
来源:互联网 发布:2017网络机顶盒哪个好 编辑:程序博客网 时间:2024/06/05 18:08
1.事务(Transaction)是一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位。
2.事务是为了保证数据库的完整性3.在oracle中,没有事务开始的语句。一个Transaction起始于一条DM L (Insert、Update和Delete )语句,结束于以下的几种情况:
用户显式执行Commit语句提交操作或Rollback语句回退。
当执行DDL(Create、Alter、Drop)语句事务自动提交。
用户正常断开连接时,Transaction自动提交。
系统崩溃或断电时事务自动回退。
以前的数据可恢复
当前的用户可以看到DML操作的结果
其他用户不能看到DML操作的结果
被操作的数据被锁住,其他用户不能修改这些数据
数据的修改被永久写在数据库中.
数据以前的状态永久性丢失.
所有的用户都能看到操作后的结果.
记录锁被释放,其他用户可操作这些记录.
语句将放弃所有的数据修改
修改的数据被回退.恢复数据以前的状态.行级锁被释放.
11事务的四大特性:ACID
⑴ 原子性(Atomicity)
原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。
⑵ 一致性(Consistency)
⑶ 隔离性(Isolation)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。
拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。
隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。
⑷ 持久性(Durability)
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
事务隔离级别:一个事务对数据库的修改与并行的另一个事务的隔离程度。
两个并发事务同时访问数据库表相同的行时,可能存在以下三个问题:
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 事务
- Oracle事务
- Oracle 事务
- 【Oracle】事务
- oracle事务
- oracle事务
- oracle事务
- Oracle事务
- Oracle事务
- Oracle事务
- oracle/事务
- oracle事务
- oracle 事务
- oracle事务
- Oracle事务
- Oracle事务
- oracle事务
- Oracle事务
- java代码连接oracle的DBUtil代码
- hadoop 集群系列 一:Linux 安装JDK
- ubuntu 系统添加开机自启动
- angular2中input与output实战
- 协调多个对象之间的交互——中介者模式(三)
- oracle事务
- IDEA 安装 mybatis-plugin并破解
- java IO流之文本内容的行逆序拷贝
- 队列结构
- 判断两个二叉树是否相似
- maven-shade-plugin踩坑记
- JDBC连接MySQL和SQL Server的工具类
- 朴素bayes 算法
- vue中的路由及自定义图标