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. [Django] Base class in the model layer

    In the model layer, the Model class is the base class while the ModelBase class is metaclass.

  2. 《炉石传说》建筑设计欣赏(6):卡&在执行数据时,组织能力

    上一篇文章我们看到了<炉石传说>核心存储卡的数据,今天,我们不断探索卡&身手. 基本的类 通过之前的分析,卡牌&技能涉及到几个类体系:Entity.Actor.Card.S ...

  3. sails 相关文章

    Node 框架之sails   http://cnodejs.org/topic/555c3c82e684c4c8088a0ca1

  4. hdu 神、上帝以及老天爷

    HDU 2006'10 ACM contest的颁奖晚会隆重开始了! 为了活跃气氛,组织者举行了一个别开生面.奖品丰厚的抽奖活动,这个活动的具体要求是这样的: 首先,所有参加晚会的人员都将一张写有自己 ...

  5. 2014百度之星资格赛——Disk Schedule

    2014百度拥有明星格比赛--Disk Schedule Problem Description 有非常多从磁盘读取数据的需求,包含顺序读取.随机读取. 为了提高效率.须要人为安排磁盘读取. 然而.在 ...

  6. 同台交换机同样VLAN能够通信,不同VLAN不可通信

    一.示意图 二.IP规划 PC0:192.168.0.100  255.255.255.0        PC1:192.168.0.110  255.255.255.0        PC2:192 ...

  7. BZOJ 3236 AHOI 2013 作业 莫队算法

    题目大意:给出一些数,问在一个区间中不同的数值有多少种,和在一个区间中不同的数值有多少个. 思路:因为没有改动,所以就想到了莫队算法.然后我写了5K+的曼哈顿距离最小生成树,然后果断T了.(100s的 ...

  8. SecureCRT使用提示

    一旦itpub我写上面,我不知道这个博客的背后,我们无法上传和修改内容.好恼火啊! 原文链接:SecureCRT的几个使用方法设置 在原文的基础上,再补充几个功能: 1.最好将全部设置定制在Globa ...

  9. zend studio 安装emmet(zen coding)

    help->Install New Software 在work with后面点击Add,弹出的对话框中填写信息: Name:随意 Location:http://emmet.io/eclips ...

  10. Android之Handler的postDelayed()使用方法

    这是一种创建多线程信息功能 用法: 1,首先创建一个Handler物 Handler handler=new Handler(); 2.然后创建一个Runnable物 Runnable runnabl ...