Oracle 事务处理

事务的四大特性

  1、原子性(Atomicity)

事务的原子性是指事务中包含的所有操作要么都做,要么都不做,保证数据库是一致的。

2、一致性(Consistency)

一致性是指数据库在事务操作前和事务处理后,其中的数据必须都满足业务规则约束。

3、隔离性(Isolation)

隔离性是数据库允许多个并发事务同时对齐数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。

如果不考虑事务的隔离性,会导致以下不正确的问题:

    • a、脏读:指一个事务读到了另外一个事务中未提交的数据
    • b、不可重复读:指一个事务读到了另外一个事务update后(事务提交了)的数据
    • c、虚读:指一个事务读到了另外一个事务insert的数据

4、持久性(Durability)

持久性表示为:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

  

数据库有四个隔离级别:

READ UNCOMMITTED:脏读、不可重复读、虚读都有可能发生。

READ COMMITTED:防止脏读发生;不可重复读、虚读都有可能发生。

REPEATABLE READ:MySQL默认级别)防止脏读、不可重复读;虚读有可能发生。

SERIALIZABLE:防止脏读、不可重复读、虚读的发生

特点:从上到下,隔离级别越高,数据越安全,但是效率越低

在 Oracle 中对于每一个连接到数据库的窗口(sqlplus、sqlplusw)连接之后实际上都会与数据库的连接建立一个 session,即:每一个连接到数据库上的用户都表示创建了一个 session。

一个 session 对数据库所做的修改,不会立刻反映到数据库的真实数据之上,是允许回滚的,当一个session 提交所有的操作之后,数据库才真正的作出修改。

在数据库的操作中提供了以下的两个主要命令完成事务的处理:

提交事务:commit ;

回滚事务:rollback ;

如果数据已经被提交了,则肯定无法回滚

在 Oracle 中关于事务的处理上也会存在锁的概念

 一个 session 如果更新了数据库中的记录,其他 session 是无法立刻更新的,要等待对方提交

之后才允许更新。

原文地址:https://www.cnblogs.com/aaron911/p/7767910.html