Oracle 11g学习笔记--数据库事务

Oracle 11g学习笔记–数据库事务

说明:本文总结自《Oracel Database 11g SQL 开发指南》Jason price著

数据库事务就是一组sql语句,这组sql语句是一个逻辑工作单元;

数据库事务的一个例子就是从一个银行账号转账到另一银行账号。此时通常包含两步操作:一条update语句负责从一个银行账号的总额中减去一定的钱数,另一条update语句负责向另一个银行账号中增加相应的钱数,减少和增加这两个操作必须永久性地记录到数据库中去,否则钱就会丢失。如果钱的转账有问题,则必须同时取消减少和增加的两个操作。

■事务的提交与回滚

要永久地记录事务到sql语句的结果,就必须执行commit操作。哟啊取消sql语句的结果,就要执行rollback语句,从而回滚事务,将所有行重新设置为初始状态;

■事务的开始与结束

事务使用来分割sql语句的逻辑工作单元。事务既有起点,也有终点。当下列事件之一发生时,事务就开始了:
●连接到数据库,并执行一条dml语句;
●前一个事务结束后,又输入一条dml语句;
当下列事件之一发生,事务就结束了:
●执行commit或者rollback语句;
●执行一条ddl语句,会自动执行commit
●执行一条dcl语句,如grant语句,这种情况下,会自动执行commit语句
●断开链接, 退出sqlplus时会执行commit,意外终止时会执行rollback;
●执行了一条dml语句,该语句却失败了。这种情况下会执行rollback;

■保存点

在事务的任何地方都可以设置保护点,这样讲可以修改回滚到保护点处;
●设置保护点:savepoint point_name;
●回滚到保护点:rollback to savepoint point_name;

■事务的ACID特性

所谓的acid特性就是事务的四个基本特征(acid来自于下面列出的每个特性的首字母)
●原子性(atomic):事务是原子的,不可分割的工作单元
●一致性(consist):事务必须保持数据库的状态保持一致
●隔离性(isolated):多个事务可以独立运行,而不会彼此影响
●持久性(durable):事务一旦提交之后,变回被永远保留下来

■并发事务

Oracle支持多个用户同时与数据库进行交互,每个用户都可以同时运行自己的事务,这种事务就称为并发事务;

■事务锁

要支持并发事务,oracle数据库软件必须确保表中的数据一直有效。这可以通过锁来实现。当一个事务已经拥有某一行上的锁时,另一个事务不能获得该行上的锁;

■事务隔离级别

事务的隔离级别是一个事务对数据库的修改与并行的另一个事务的隔离程度;在了解事务的隔离级别之前,我们先要说说事务处理过程中会出现哪些问题:

●幻象读取:当一个事务在另一个事务执行插入操作前后,产生的新行就是幻象;
●不可重复读取:当一个事务在另一事务执行修改操作前后,发现结果不同;
●脏读:事务1更新了一行记录,但是没有提交,这是事务2读取更新后的操作,然后事务1执行回滚。现在事务2读取的数据已经无效(脏数据);

为了处理这些问题,数据库实现了不同级别的事务隔离性(级别从低到高)
●read uncommitted 都允许
●read committed只是不允许脏读
●repeatable read只允许幻象读
●serializable都不允许

注意:serializable会增加语句的执行时间,因此只有在必须的情况下才应该使用该级别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值