1. 事务提交过程

  1. 事务

基本概念

概念:一个或者多个DML语言组成

特点:要么都成功。要么都失败

事务的隔离性:多个client同一时候操作数据库的时候。要隔离它们的操作,

否则出现:脏读 
不可反复读 
幻读

Oracle默认情况下,事务是打开的

commit案例:

SQL> create table t1(tid int,tname varchar2(20));

表已创建。

SQL> select * from tab;

TNAME                         
TABTYPE  CLUSTERID

------------------------------ ------- ----------

BONUS                         
TABLE

DEPT                          
TABLE

EMP                           
TABLE

EMP10                         
TABLE

SALGRADE                      
TABLE

T1       
                     TABLE

已选择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="">

  1. Oracle中的事务生命周期

1.事务的起始标志 DML语言(oracle默认事务是打开的)

2.事务的结束标志

提交

显式提交commit

隐式提交

运行DDL语句

Eg:运行create table的时候还有1个隐式的功能

提交之前没有提交的DML语句(insert
update)

正常退出

回滚

显式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语句没有插入进去。回滚到了指定的保存点

  1. 数据库的隔离级别

对于同一时候执行的多个事务,当这些事务訪问数据库中同样的数据时,假设没有採取必要的隔离机制,就会导致各种并发问题

脏读:对于两个事务T1,T2,T1读取了已经被T2更新但还没有被提交的字段之后,若T2回滚。T1读取的内容就是暂时且无效的。

不可反复读:对于两个事物T1,T2,T1读取了一个字段。然后T2更新了该字段。之后T1再次读取同一个字段,值就不同了。

幻读:对于两个事务T1,T2,T1从一个表中读取了一个字段,然后T2在该表中插入了一些新的行。之后,假设T1再次读取同一个表。就会多出几行。

数据库事务的隔离性:数据库系统必须具有隔离并发执行多个事务的能力,使它们不会相互影响,避免各种并发问题。

一个事务与其它事务隔离的程度称为隔离级别.
数据库规定了多种事务隔离级别,
不同隔离级别相应不同的干扰程度,
隔离级别越高,
数据一致性就越好,
但并发性越弱

数据库提供4中事务隔离级别:sql99

Oracle
支持的
2 种事务隔离级别:READ COMMITED, SERIALIZABLE. Oracle
默认的事务隔离级别为: READ COMMITED

另外还支持一种隔离级别:read-only

Mysql
支持
4 中事务隔离级别. Mysql
默认的事务隔离级别为: REPEATABLE READ

版权声明:本文博客原创文章。博客,未经同意,不得转载。

4.事务提交过程,交易的基本概念,Oracle交易周期,保存点savepoint,数据库的隔离级别的更多相关文章

  1. mysql源码解读之事务提交过程(一)

    mysql是一种关系型数据库,关系型数据库一个重要的特性就是支持事务,这是区别于no-sql产品的一个核心特性.当然了,no-sql产品支持键值查询,不能支持sql语句,这也是一个区别.今天主要讨论下 ...

  2. MySQL事务提交过程(二)

    上一篇文章我们介绍了在关闭binlog的情况下,事务提交的大概流程.之所以关闭binlog,是因为开启binlog后事务提交流程会变成两阶段提交,这里的两阶段提交并不涉及分布式事务,当然mysql把它 ...

  3. MySQL事务提交过程(一)

    MySQL作为一种关系型数据库,已被广泛应用到互联网中的诸多项目中.今天我们来讨论下事务的提交过程. MySQL体系结构 由于mysql插件式存储架构,导致开启binlog后,事务提交实质是二阶段提交 ...

  4. MySQL事务提交过程

    一.MySQL事务提交过程(一) MySQL作为一种关系型数据库,已被广泛应用到互联网中的诸多项目中.今天我们来讨论下事务的提交过程. 由于mysql插件式存储架构,导致开启binlog后,事务提交实 ...

  5. 分布式事务_03_2PC框架raincat源码解析-事务提交过程

    一.前言 前面两节,我们已经将raincat的demo工程启动,并简单分析了下事务协调者与事务参与者的启动过程. 这一节,我们来看下raincat的事务提交过程. 二.事务提交过程概览 1.二阶段对应 ...

  6. mysql源码解读之事务提交过程(二)

    上一篇文章我介绍了在关闭binlog的情况下,事务提交的大概流程.之所以关闭binlog,是因为开启binlog后事务提交流程会变成两阶段提交,这里的两阶段提交并不涉及分布式事务,当然mysql把它称 ...

  7. mysql 事务提交过程

     打开binlog选项后,执行事务提交命令时,就会进入两阶段提交模式.两阶段提交分为prepare阶段和commit两个阶段.流程如下 :这里面涉及到两个重要的参数:innodb_flush_log_ ...

  8. MySQL事务提交过程(转载)

    http://blog.csdn.net/sofia1217/article/details/53968214 上一篇文章我们介绍了在关闭binlog的情况下,事务提交的大概流程.之所以关闭binlo ...

  9. Spring的事务传播属性,数据库的隔离级别

    Spring事务的传播属性  REQUIRED 业务方法需要在一个事务中运行,如果方法运行时,已处在一个事务中,那么就加入该事务,否则自己创建一个新的事务.这是spring默认的传播行为. SUPPO ...

随机推荐

  1. Android 学习历程摘要(二)

    1.资源文件命名仅仅能小写,否则会报错生成不了R.java文件 2.R文件导包时应该导入自己project的包,而不是android.R 3.数据库操作使用SqliteOpenHelper 4.val ...

  2. poj 3311Hie with the Pie

    题意:一个送披萨的,每次送外卖不超过10个地方,给你这些地方之间的时间,求送完外卖回到店里的总时间最小. 解法一: 这个n不大,即使是NP问题也才1E6多一些所以可以dfs():具体的回溯方法结合da ...

  3. UVA - 12338 Anti-Rhyme Pairs (哈希)

    Description D Anti-Rhyme Pairs Input: Standard Input Output: Standard Output Often two words that rh ...

  4. Asp.NET MVC3 使用 SignalR 实现推(持续)

    一,Persistent Connection 演示示例教程 1.实现server端代码 1),编写server PersistentConnection 代码 项目中 SignalR 文件夹下创建 ...

  5. linux下一个Oracle11g RAC建立(五岁以下儿童)

    linux下一个Oracle11g RAC建立(五岁以下儿童) 四.建立主机之间的信任关系(node1.node2) 建立节点之间oracle .grid 用户之间的信任(通过ssh 建立公钥和私钥) ...

  6. nuget 命令详解

    包相关 Install-Package 安装包   -Version 4.3.1 参数指定版本Uninstall-Package 卸载包Update-Package 更新包Get-Package 默认 ...

  7. php+sqlite cms

    1 phpSQLiteCMS 最新版本 phpSQLiteCMS 2.0.4 http://phpsqlitecms.net/ 2 taoCMS  最新版本 [2.5Beta5下载地址] 需要php ...

  8. struts2移除标签button的id传统的价值观念问题

    <!--显示数据列表--> <tbody id="TableData" class="dataContainer" datakey=" ...

  9. 初步STL集装箱Vector

    vector 特点: 1.可变长的动态数组 2.使用时包括头文件 #include <vector> 3.支持随机訪问迭代器 • 依据下标随机訪问某个元素时间为常数 • 在尾部加入速度非常 ...

  10. [WebView其中一项研究]:Web Apps基本介绍

    今天,我们开始了解WebView,以及Web Apps发展,从主要内容Android实际的例子来解释正式文件和后续. (博客地址:http://blog.csdn.net/developer_jian ...