zoukankan      html  css  js  c++  java
  • Mysql基础之 事务

    MySql事务

    Mysql事务主要处理操作量大,复杂度高的数据。

    Mysql事务需要注意的三点:

      1、在mysql中只有使用innodb数据库引擎的数据库或表才支持事务

      2、事务处理可以用来维护数据库的完整性,保证呈批的SQL语句要么全部执行,要么全部不执行。

      3、事务用来管理insert、update、delete语句

    Mysql事务必须满足的4个条件

      1、原子性:一个事务中的所有操作,要么全部完成,要么全部不完成。不会结束在中间的某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有被执行过一样。

      2、一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性的完成预定的工作

      3、隔离性:数据库允许多个并发事务同时对数据进行读写和修改的能力,隔离性可以放置多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交、读提交、可重复读和串行化

      4、持久性:事务处理结束后,对数据的修改时永久的,即便系统故障也不会丢失数据。

      注意:在MySQL命令行的默认设置下,事务都是自动提交的,即执行SQL语句后就会马上执行COMMIT操作。因此要显式地开启一个事务必须使用命令BEGIN或者START TRANSACTION语句。如果说要禁止使用当前会话的自动提交,可以执行命令SET AUTOCOMMIT=0。刚开始还不能理解这句话是什么意思,就是搞不清楚。后来明白了,如果要使用mysql中的事务,要么在事务执行语句开头做个声明set autocommit=0,这个时候就不用再写start  transaction了,直到遇到commit命令,此时完成一个事务。要么开头不声明set autocommit=0,这个时候我们就要使用BEGIN语句(或start transaction),直到遇到commit语句事务就执行成功了。

    事务控制语句:

      BEGIN或START TRANSACTION:显示地开启一个事务

      COMMIT:COMMIT会提交事务,并使已对数据库进行的所有修改成功永久性的

      ROLLBACK:回滚会结束用户的事务,并撤销正在进行的所有未提交的修改

      SAVEPOINT identifier:SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有对个SAVEPOINT;

      RELEASE SAVEPOINT identifier:删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常

      ROLLBACK TO identifier:把事务回滚到标记点

      SET TRANSACTION:用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和SERIALIZABLE

    MySQL事务处理主要有两种方法:

      1、用BEGIN,ROLLBACK,COMMIT来实现

        BEGIN:事务开始

        ROLLBACK:事务回滚

        COMMIT:事务确认

      2、直接用SET来改变mysql的提交模式

        SET AUTOCOMMIT=0  禁止自动提交

        SET AUTOCOMMIT=1 开启自动提交

     MySQL中SET AUTOCOMMIT=0与BEGIN的区别

      SET AUTOCOMMIT=0

      当前的session禁用自动提交事务,自此句执行以后,每个SQL语句或者语句块所在的事务都需要显示“commit”才提交事务

      BEGIN

      指的是启动一个新事物。

      在默认的情况下,MySQL从自动提交(autocommit)模式运行,这种模式会在每条语句执行完毕后把它作出的修改立刻提交给数据库并使之永久化。事实上,这相当于把每一条语句都隐含地当做一个事务来执行。如果你想明确地执行事务,需要禁用自动提交模式并告诉MySQL你想让它在何时提交或回滚有关的修改。

      执行事务的常用办法是发出一条START TRANSACTION(或BEGIN)语句挂起自动提交模式,然后执行构成本次事务的各条语句,最后用一条 COMMIT语句结束事务并把它们作出的修改永久性地记入数据库。万一在事务过程中发生错误,用一条ROLLBACK语句撤销事务并把数据库恢复到事务开 始之前的状态。

      START TRANSACTION语句"挂起"自动提交模式的含义是:在事务被提交或回滚之后,该模式将恢复到开始本次事务的 START TRANSACTION语句被执行之前的状态。(如果自动提交模式原来是激活的,结束事务将让你回到自动提交模式;如果它原来是禁用的,结束 当前事务将开始下一个事务。)
      如果是autocommit模式  ,autocommit的值应该为 1 ,不autocommit 的值是 0 ;请在试验前 确定autocommit 的模式是否开启 。

  • 相关阅读:
    匈牙利算法——S.B.S.
    洛谷P1328 生活大爆炸版石头剪刀布——S.B.S.
    洛谷P1101 单词方阵——S.B.S.
    noip2010提高组3题题解 by rLq
    洛谷P1605 迷宫——S.B.S.
    yii2.0 curd操作
    我常用的linux命令
    常用css
    ln 软链
    crontab下git命令无效
  • 原文地址:https://www.cnblogs.com/FengGeBlog/p/9764497.html
Copyright © 2011-2022 走看看