oracle数据库之事务

1、事务的概念
在数据库中事务是工作的逻辑单元,一个事务由一个或多个完成相关行为的SQL语句组成,通过事务机制保证这一组SQL语句所做的操作要么全部执行执行成功,要不全部不执行

2、事务的ACID特性
原子性(Atomicity):事务的原子性是指事务中的所有SQL语句是一个整体,SQL语句所做的操作要么全部执行成功,要不全部不执行,保证数据的一致性
一致性(Consistency);数据库的数据在事务处理前和事务处理后,其中数据必须满足业务的规则约束
隔离性(Isolation):数据库允许多个并发的事务对其中的数据进行读写或修改的能力,隔离性可以防止多个事务并发执行时,由于它们的操作命令交叉执行而导致数据不一致
持久性(Durability):事务一旦成功提交,对数据库的修改就是永久性的。

3、事务的作用
用于保证数据库数据的一致性

4、事务的结束
COMMIT;
ROLLBACK;

5、事务隔离级别
针对读取数据时可能产生的不一致现象,SQL92标准定义了4个事务的隔离级别

(1)Read uncommitted(读未提交),可能会导致脏读、不可重复读和幻读,是语句级别的隔离
(2)Read committed(读提交),不会脏读,可能会不可重复读和幻读,是语句级别的隔离
(3)Repeatable read(可重复读),不会脏读和不可重复读,可能会幻读,是事务级别的隔离
(4)Serializable(串行读),不会脏读、不可重复读和幻读,是事务级别的隔离

6、oracle中的事务隔离级别

在Oracle中,读取操作不会阻碍更新操作,更新操作也不会阻碍读取操作,这样在Oracle中的各种隔离级别下,读取操作都不会等待更新事务结束,更新操作也不会因为另一个事务中的读取操作而发生等待,这也是Oracle事务处理的一个优势所在。


oracle支持Read Committed和Serializable级别,默认的隔离级别是Read committed,在oracle中隔离级别实现如下:
Read Committed隔离级别(也称为语句级别的隔离)
如果一个事务正在对某个表进行DML操作,而这时另外一个会话对这个表的记录进 行读取操作,则Oracle会去读取回滚段或撤销段中存放的更新之前的记录,而不会象SQL Server一样等待更新事务的结束。
Serializable隔离级别(也称为事务级别的隔离)
事务中的读取操作只能读取这个事务开始之前已经提交的数据结果。如果在读取时, 其他事务正在对记录进行修改,则Oracle就会在回滚段或撤销段中去寻找对应的原来未经更改的记录(而且是在读取操作所在的事务开始之前存放于回滚段或 撤销段的记录),这时读取操作也不会因为相应记录被更新而等待。

猜你喜欢

转载自blog.csdn.net/cc_0101/article/details/81871621