zoukankan      html  css  js  c++  java
  • 4.事务提交过程,交易的基本概念,Oracle交易周期,保存点savepoint,数据库的隔离级别

    
    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>

     

    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,T2T1读取了已经被T2更新但还没有被提交的字段之后,若T2回滚。T1读取的内容就是暂时且无效的。

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

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

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

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

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

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

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

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

     

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

  • 相关阅读:
    探索c#之一致性Hash详解
    Redis系列(三)-Redis发布订阅及客户端编程
    Redis系列(二)-Hredis客户端设计及开源
    关于电脑操作一些高效的方法工具
    探索c#之递归APS和CPS
    探索C#之系列目录导航
    探索c#之不可变数据类型
    SOA相关资料整理分享
    探索c#之尾递归编译器优化
    探索c#之函数创建和闭包
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4603718.html
Copyright © 2011-2022 走看看