zoukankan      html  css  js  c++  java
  • 事务

    事务的概念

    事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功。

    数据库开启事务命令DTL

    start transaction 开启事务

    Rollback 回滚事务

    Commit 提交事务

    使用事务

    当Jdbc程序向数据库获得一个Connection对象时,默认情况下这个Connection对象会自动向数据库提交在它上面发送的SQL语句。

    若想关闭这种默认提交方式,让多条SQL在一个事务中执行,可使用下列语句:

    JDBC控制事务语句

    Connection.setAutoCommit(false);start transaction

    Connection.rollback(); rollback

    Connection.commit(); commit

    设置事务回滚点

    Savepoint sp = conn.setSavepoint();

    Conn.rollback(sp);

    Conn.commit(); //回滚后必须要提交

    事务的特性(ACID)

    原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 

    一致性(Consistency) 事务必须使数据库从一个一致性状态变换到另外一个一致性状态。

    隔离性(Isolation) 事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

    持久性(Durability) 持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。

    事务的隔离级别

    多个线程开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个线程在获取数据时的准确性。

    如果不考虑隔离性,可能会引发如下问题:

    事务的隔离性

    脏读: 指一个事务读取了另外一个事务未提交的数据。

    不可重复读(针对一条记录的,同一条记录前后不一样)

    和脏读的区别是,脏读是读取前一事务未提交的脏数据,不可重复读是重新读取了前一事务已提交的数据。

    虚读(幻读,同一张表前后不一样记录数)

    是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。

    事务隔离性的设置语句

    数据库共定义了四种隔离级别:

    Serializable:可避免脏读、不可重复读、虚读情况的发生。(串行化)

    Repeatable read:可避免脏读、不可重复读情况的发生。

    Read committed:可避免脏读情况发生。

    Read uncommitted:最低级别,以上情况均无法保证。(读未提交)

    set transaction isolation level 设置事务隔离级别

    select @@tx_isolation 查询当前事务隔离级别

  • 相关阅读:
    2015531 网络攻防 Exp1 PC平台逆向破解(5)M
    2017-2018-1 20155331 嵌入式C语言
    20155330 《网络对抗》 Exp9 web安全基础实践
    20155330 《网络对抗》 Exp8 Web基础
    20155330 《网络对抗》 Exp7 网络欺诈防范
    20155330 《网络对抗》 Exp6 信息搜集与漏洞扫描
    20155330 《网络对抗》 Exp5 MSF基础应用
    20155330 《网络攻防》 Exp4 恶意代码分析
    20155330 《网络攻防》 Exp3 免杀原理与实践
    20155330 《网络对抗》 Exp2 后门原理与实践
  • 原文地址:https://www.cnblogs.com/future-zmy/p/6188373.html
Copyright © 2011-2022 走看看