4.事务提交过程,交易的基本概念,Oracle交易周期,保存点savepoint,数据库的隔离级别
事务提交过程
事务
基本概念 |
概念:一个或者多个DML语言组成 特点:要么都成功。要么都失败 事务的隔离性:多个client同一时候操作数据库的时候。要隔离它们的操作, 否则出现:脏读 |
Oracle默认情况下,事务是打开的 |
commit案例: SQL> create table t1(tid int,tname varchar2(20)); 表已创建。 SQL> select * from tab; TNAME ------------------------------ ------- ---------- BONUS DEPT EMP EMP10 SALGRADE T1 已选择6行。 SQL> insert into t1(tid,tname) values(1,'aaaaa'); 已创建 1 SQL> select * from t1; TID TNAME ---------- -------------------- 1 aaaaa SQL> commit; 提交完毕。 SQL> select * from t1; TID TNAME ---------- -------------------- 1 aaaaa SQL> rollback; 回退已完毕。 SQL> select * from t1; TID TNAME ---------- -------------------- 1 aaaaa SQL> |
rollback案例: SQL> select * from t1; TID TNAME ---------- -------------------- 1 aaaaa SQL> insert into t1(tid,tname) values(2,'bbb'); 已创建 1 SQL> select * from t1; TID TNAME ---------- -------------------- 1 aaaaa 2 bbb SQL> rollback; 回退已完毕。 SQL> select * from t1; TID TNAME ---------- -------------------- 1 aaaaa SQL>
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""> |
Oracle中的事务生命周期
1.事务的起始标志 DML语言(oracle默认事务是打开的) |
|||
2.事务的结束标志 |
提交 |
显式提交commit |
|
隐式提交 |
运行DDL语句 Eg:运行create table的时候还有1个隐式的功能 提交之前没有提交的DML语句(insert |
||
正常退出 |
|||
回滚 |
显式rollback |
||
隐式:掉电/宕机/非正常退出。这几者等价于系统出错了 |
4
保存点savepoint
案例: |
SQL> select * from t1; TID TNAME ---------- -------------------- 1 aaaaa SQL> insert into t1(tid,tname) values(2,'bbb'); 已创建 1 SQL> select * from t1; TID TNAME ---------- -------------------- 1 aaaaa 2 bbb SQL> rollback; 回退已完毕。 SQL> select * from t1; TID TNAME ---------- -------------------- 1 aaaaa SQL> |
总结:最后一条insert语句没有插入进去。回滚到了指定的保存点 |
数据库的隔离级别
对于同一时候执行的多个事务,当这些事务訪问数据库中同样的数据时,假设没有採取必要的隔离机制,就会导致各种并发问题 |
脏读:对于两个事务T1,T2,T1读取了已经被T2更新但还没有被提交的字段之后,若T2回滚。T1读取的内容就是暂时且无效的。 |
不可反复读:对于两个事物T1,T2,T1读取了一个字段。然后T2更新了该字段。之后T1再次读取同一个字段,值就不同了。 |
|
幻读:对于两个事务T1,T2,T1从一个表中读取了一个字段,然后T2在该表中插入了一些新的行。之后,假设T1再次读取同一个表。就会多出几行。 |
|
数据库事务的隔离性:数据库系统必须具有隔离并发执行多个事务的能力,使它们不会相互影响,避免各种并发问题。 |
|
一个事务与其它事务隔离的程度称为隔离级别. |
|
数据库提供4中事务隔离级别:sql99 |
|
Oracle 另外还支持一种隔离级别:read-only |
|
Mysql |
版权声明:本文博客原创文章。博客,未经同意,不得转载。
4.事务提交过程,交易的基本概念,Oracle交易周期,保存点savepoint,数据库的隔离级别的更多相关文章
- mysql源码解读之事务提交过程(一)
mysql是一种关系型数据库,关系型数据库一个重要的特性就是支持事务,这是区别于no-sql产品的一个核心特性.当然了,no-sql产品支持键值查询,不能支持sql语句,这也是一个区别.今天主要讨论下 ...
- MySQL事务提交过程(二)
上一篇文章我们介绍了在关闭binlog的情况下,事务提交的大概流程.之所以关闭binlog,是因为开启binlog后事务提交流程会变成两阶段提交,这里的两阶段提交并不涉及分布式事务,当然mysql把它 ...
- MySQL事务提交过程(一)
MySQL作为一种关系型数据库,已被广泛应用到互联网中的诸多项目中.今天我们来讨论下事务的提交过程. MySQL体系结构 由于mysql插件式存储架构,导致开启binlog后,事务提交实质是二阶段提交 ...
- MySQL事务提交过程
一.MySQL事务提交过程(一) MySQL作为一种关系型数据库,已被广泛应用到互联网中的诸多项目中.今天我们来讨论下事务的提交过程. 由于mysql插件式存储架构,导致开启binlog后,事务提交实 ...
- 分布式事务_03_2PC框架raincat源码解析-事务提交过程
一.前言 前面两节,我们已经将raincat的demo工程启动,并简单分析了下事务协调者与事务参与者的启动过程. 这一节,我们来看下raincat的事务提交过程. 二.事务提交过程概览 1.二阶段对应 ...
- mysql源码解读之事务提交过程(二)
上一篇文章我介绍了在关闭binlog的情况下,事务提交的大概流程.之所以关闭binlog,是因为开启binlog后事务提交流程会变成两阶段提交,这里的两阶段提交并不涉及分布式事务,当然mysql把它称 ...
- mysql 事务提交过程
打开binlog选项后,执行事务提交命令时,就会进入两阶段提交模式.两阶段提交分为prepare阶段和commit两个阶段.流程如下 :这里面涉及到两个重要的参数:innodb_flush_log_ ...
- MySQL事务提交过程(转载)
http://blog.csdn.net/sofia1217/article/details/53968214 上一篇文章我们介绍了在关闭binlog的情况下,事务提交的大概流程.之所以关闭binlo ...
- Spring的事务传播属性,数据库的隔离级别
Spring事务的传播属性 REQUIRED 业务方法需要在一个事务中运行,如果方法运行时,已处在一个事务中,那么就加入该事务,否则自己创建一个新的事务.这是spring默认的传播行为. SUPPO ...
随机推荐
- WPF下的视频录制界面设计
原文:WPF下的视频录制界面设计 在去年12月份,我曾经写过三篇文章讨论C#下视频录制.播放界面的设计.这三篇文章是:利用C#画视频录制及播放的界面(一) 利用C#画视频录制及播放的界面(二)利用C# ...
- rhel5.8 ISO yum源配置
[root@lei1 mnt]# mkdir /mnt/iso [root@lei1 mnt]# mkdir /mnt/cdrom [root@lei1 ~]# mv rhel-server-5.8- ...
- OTN&互换amp; P-OTN有效降低100G 网络成本 (两)
OTN互换& P-OTN有效降低100G 网络成本 (两) 在全球范围内.网流量的增长速度是空前的,导致此现象的缘由包含云服务的增长.移动宽带和基于互联网的视频点播服务的增长. Cisco估计 ...
- C++ Primer 学习笔记_2_高速入口(继续)
P15习题 //题1.14: 试分析假设v1 == v2的情况下,该程序的输出结果 #include <iostream> int main() { std::cout <&l ...
- hdu3572 任务分配/最大流量推论全流
意甲冠军:将n分配的任务m机.到的每个任务需要的天数(如果没有持续的日常),并能做到在哪些天任务.询问是否有计划. 典型的任务(X)----日(Y)一半的最大流量,(因为这个任务是天之间的关系)处理器 ...
- Shuttle ESB(四)——宣布订阅模式实例介绍(1)
前,我的重点是关注的三篇文章Shuttle ESB入境和宏观的概念范例. Shuttle ESB模式:请求/对应模式与Pub/Sub模式. 关于这两种模式的区分,请看以下文章的介绍:Shuttle E ...
- RH133读书 笔记(5) - Lab 5 User and Group Administration
Lab 5 User and Group Administration Goal: To build skills for user and group administration. Estimat ...
- php 二维数组传递给 js 问题解决记录
需求: php从数据库中读取到二维数组.传递到js中 实现步骤: php:json_encode → json → js:eval 即在php中使用json_encode()将php的二维数 ...
- Java拾遗(一):浅析Java子类和父类的实例化顺序 及 陷阱
本文主要介绍Java里经常使用的子类和父类的变量实例化顺序及陷阱,并结合一个Android实例来探讨此问题.日后编程中应尽量避免此陷阱. 首先看以下一段代码: 定义一个虚类Server.java pa ...
- OpenGL中shader使用
学了接近一个月的OpenGL,最终要排上用场了...好吧,就从学到的shader(着色器)开刀吧. 先简单的介绍shader,shader事实上是显卡的功能,就是利用显卡的GPU去做图像处理的工作,而 ...