Oracle事务
Oracle事务的ACID特性
| 原子性Atomicity:事务中的所有动作要么都发生,要么都不发生。 |
| 一致性Consistency:事务将数据库从一种状态转变为下一种一致状态。 |
| 隔离性Isolation:一个事务的影响在该事务提交前对其他事务时不可见的。 |
| 持久性Durability:事务一旦提交,其影响就是永久性的。 |
事务控制语句
事务隐式开始
事务必须显示结束(Commit、Rollback)
| Commit 会结束事务,并使得已做的修改持久的保存在数据库中 |
| Rollback 会结束事务,并撤销这个事务所做的修改。撤销动作需要读取回滚段中的信息,并把数据恢复到事务开始之前的状态 |
| Savepoint 创建标记点(marked point),一个事务可以有多个标记点 |
| Rollback To<Savepoint> 把事务回滚到指定的标记点,但是不回滚此标记点之前的工作。 |
| Set transaction 允许设置不同的事务属性,如事务的隔离级别以及事务时只读的还是可读可写的。 |
原子性
| 语句级原子性 SQL> create table t2(cnt int); Table created. SQL> insert into t2 values(0); 1 row created. SQL> create table t(x int check(x>0)); Table created. SQL> create or replace trigger t_trigger CNT SQL> select * from t; no rows selected SQL> insert into t values(1); 1 row created. SQL> insert into t values(-1); SQL> select * from t2; CNT |
| 过程级原子性 Oracle把PL/SQL匿名块也当做是语句 SQL> create or replace procedure p Procedure created. SQL> delete from t; 0 rows deleted. SQL> update t2 set cnt=0; 1 row updated. SQL> commit; Commit complete. SQL> select * from t; no rows selected SQL> select * from t2; CNT SQL> begin SQL> set serveroutput on SQL> select * from t; no rows selected SQL> select * from t2; CNT |
| 事务级原子性 |
| DDL与原子性 |
持久性
| COMMIT的WRITE扩展 COMMIT WRITE WAIT (默认)必须等待redo写到磁盘才返回消息给客户端 COMMIT WRITE NOWAIT 异步提交,redo条目还没写入磁盘就返回消息给客户端 |
| 非分布式PL/SQL代码块中的COMMIT 在后台以异步的方式执行 即commit=commit write nowait |
完整性约束和事务
| Immediate约束 整个SQL语句得到处理后立即检查 SQL> create table t(x int unique); Table created. SQL> insert into t values(1); 1 row created. SQL> insert into t values(2); 1 row created. SQL> commit; Commit complete. SQL> update t set x=x-1; 2 rows updated. |
| Deferrable约束和级联更新 SQL> create table parent Table created. SQL> create table child Table created. SQL> insert into parent values(1); 1 row created. SQL> insert into child values(1); 1 row created. SQL> update parent set pk=2; 由于约束是IMMEDIATE模式,update失败,换为deferred模式 Constraint set. SQL> update parent set pk=2; 1 row updated. SQL> set constraint child_fk_parent immediate; SQL> update child set fk=2; 1 row updated. SQL> set constraint child_fk_parent immediate; Constraint set. SQL> commit; Commit complete. |
不好的事务习惯
| 在循环中提交 1.性能影响
2.Snapshot Too Old |
|||
| 使用自动提交 |
分布式事务
自治事务:允许创建一个事务中的事务,它能独立于其父事务提交或者回滚。
Oracle事务的更多相关文章
- 浅谈Oracle事务【转载竹沥半夏】
浅谈Oracle事务[转载竹沥半夏] 所谓事务,他是一个操作序列,这些操作要么都执行,要么都不执行,是一个不可分割的工作单元.通俗解释就是事务是把很多事情当成一件事情来完成,也就是大家都在一条船上,要 ...
- Oracle事务之一:锁和隔离
Oracle事务之一:锁和隔离 一. 事务概述 事务管理是数据库处理的核心.数据库既要保证用户能并发地执行事务,还要保证数据库的一致性. 当第一条可执行的SQL开始执行,就隐形地开始了一个事务,直到遇 ...
- oracle事务和锁
数据库事务概括 1. 说明 一组SQL,一个逻辑工作单位,执行时整体修改或者整体回退. 2.事务相关概念 1)事务的提交和回滚:COMMIT/ROLLBACK 2)事务的开始和结束 开始事务:连接到数 ...
- oracle事务和锁(转)
If you use a SET TRANSACTION statement, then it must be the first statement in your transaction. How ...
- oracle事务(转)
今天温习oracle事务,记录如下: 事务定义 事务是保持数据的一致性,它由相关的DDL或者DML语句做为载体,这组语句执行的结果要么一起成功,要么一起失败. 我们 ...
- oracle 事务 与 提交
Oracle事务 一般事务(DML)即数据修改(增.删.改)的事务事务会将所有在事务中被修改的数据行加上锁(行级锁),来阻止其它人(会话)同时对这些数据的修改操作.当事务被提交或回滚后,这些数据才会被 ...
- Oracle事务隔离级别处理差异
Oracle事务隔离是事务读操作不同程度的数据隔离,分为READ_UNCOMMITTED.READ_COMMITTED(默认).SERIALIZABLE. Oracle事务隔离级别SERIALIZAB ...
- Oracle事务与锁
Oracle事务与锁 2017-12-13 目录 1 数据库事务概括 1.1 事务定义 1.2 事务生命周期 1.3 事物的特性 1.4 死锁2 事务相关语句 2.1 事务相关语句概括 2 ...
- 转:oracle 事务
原文地址:http://blog.csdn.net/junmail/article/details/5556561 关于Oracle事务的总结 1.什么是事务,事务的特性是什么? 事务的任务便是使数据 ...
随机推荐
- QQ远程桌面的使用
腾讯QQ怎样使用远程桌面: ---------------------- ----------------------
- MyBatis Cache配置
@(MyBatis)[Cache] MyBatis Cache配置 MyBatis提供了一级缓存和二级缓存 配置 全局配置 配置 说明 默认值 可选值 cacheEnabled 全局缓存的开关 tru ...
- 学习CodeIgniter框架之旅(一)自定义模板目录
在常用的框架本身都已经做好了分层和目录结构,但这在很多时候不满足项目的需求甚至在某些情况下变得不合理,因此很多时候需要自定义目录结构,在此就看看如果在CodeIgniter框架中自定义模板目录: 在C ...
- PostgreSQL数据库中的常见错误
转载以作参考. 错误1 FATAL: connection limit exceeded for non-superusers 原因:非超级用户的连接数(max_connections - super ...
- Code Snippets 代码片段
Code Snippets 代码片段 1.Title : 代码片段的标题 2.Summary : 代码片段的描述文字 3.Platform : 可以使用代码片段的平台,有IOS/OS X/ ...
- 模板化的七种排序算法,适用于T* vector<T>以及list<T>
最近在写一些数据结构以及算法相关的代码,比如常用排序算法以及具有启发能力的智能算法.为了能够让写下的代码下次还能够被复用,直接将代码编写成类模板成员函数的方式,之所以没有将这种方式改成更方便的函数模板 ...
- 计算机维修之操作系统的安装(windows、Mac、Linux)
从大学开始接触了更多的计算机知识,我就在开荒一样,慢慢的接触多了,就想着安装操作系统一定要学会. 前前后后呢,我折腾过很多操作系统,在我的笔记本上存在过Windows.黑苹果.Linux.安卓等操作系 ...
- web自动化工具-livereload
web自动化工具-livereload livereload是一个很神奇的工具,主要解放了F5键,监听文件变动,整个页面自动刷新.可搭载gulp等构建工具使用.和liveStyle 针对样式文件相比, ...
- java关键包简易说明
java.lang 语言核心类,系统自动导入. java.util java工具类.集合框架.时间,日历等. java.net 网络编程接口和类. java.io 流的接口和类 java.te ...
- [COJ2201][KOJ0223][KOJ0250]花园
[KOJ0223][KOJ0250]花园 试题描述 小奇的花园有n个温室,标号为1到n,温室以及以及温室间的双向道路形成一棵树. 每个温室都种植着一种花,随着季节的变换,温室里的花的种类也在不断发生着 ...