zoukankan      html  css  js  c++  java
  • Mysql事务

    1.事务简介 

      事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。程序和事务是两个不同的概念。一般而言:一段程序中可能包含多个事务。MYSQL中只有INNODBBDB类型的数据表才能支持事务处理默认配置下,数据库总是自动提交的。

    2.事务特性

         事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这四个特性也简称ACID性。

    (1)原子性事务是应用中最小的执行单位,就如原子是自然界最小颗粒,具有不可再分的特征一样。事务是应用中不可再分最小逻辑执行体

    (2)一致性事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态。当数据库中只包含事务成功提交的结果时,数据库处于一致性状态。一致性是通过原子性保证的。

    (3)隔离性:各个事务的执行互不干扰任意一个事务的内部操作其他并发的事务,都是隔离的。也就是说:并发执行事务之间不能看到对方的中间状态,并发执行的事务之间不能相互影响

    (4)持续性持续性也称为持久性,指事务一旦提交,对数据所做的任何改变,都要记录到永久存储器中,通常是保存进物理数据库。

      隔离性通过Mysql InnoDB锁就可以实现。原子性一致性持久性通过数据库的redoundo来完成

    3.数据库的事务语句组成

    3.1 事务语句的组成

    (1)一组DML(Data Manipulate Language,即数据操作语言)经过这组DML修改后数据将保持较好的一致性。

    (2)一个DDL(Data Definition Language,即数据定义语言)语句。

    (3)一个DCL(Data control Language,即数据控制语言)语句。

           DDLDCL语句最多只能有一个,因为DDLDCL语句都会导致事务立即提交

           当事务所包含的全部数据库操作成功执行后,应该提交(commit)事务,使这些修改永久生效

    3.2 隐式提交的SQL语句

    以下这些SQL语句会产生一个隐式的提交操作,即执行完这些语句后,会有一个隐式的COMMIT操作

    (1)DDL语句:ALTER DATABASE...UPGRADE DATA DIRECTORY NAME、。。。。

    (2)用来隐式的修改mysql架构的操作:CREATE USER、DROP USER、GRANT、RENAME USER、REVOKE、SET PASSWORD。

    (3)管理语句:ANALYZE TABLE、CACHE INDEX、CHECK TABLE、LOAD INDEX INTO CACHE、OPTIMIZE TABLE 、REPAIR TABLE。

    4.事务的提交方式

           事务提交有两种方式:显式提交自动提交

    (1)显式提交:使用commit

    (2)自动提交:执行DDLDCL,或者程序正常退出

    5.MYSQL的事务处理两种方法

    (1)用begin,start transaction,rollback,commit来实现

           begin/start transaction    开始一个事务
           rollback             事务回滚
           commit                事务确认

    (2)直接用set来改变mysql的自动提交模式
          MYSQL默认自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过

          set autocommit=0     禁止自动提交
          set autocommit=1    开启自动提交

        来实现事务的处理。
      但注意当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认rollback结束,注意当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!

  • 相关阅读:
    洛谷2444(Trie图上dfs判环)
    【做题】Codeforces Round #453 (Div. 1) D. Weighting a Tree——拆环
    【做题】POJ3469 Dual Core CPU——第一道网络流
    【做题】atc_cf17-final_E
    【做题】spoj4060 A game with probability——dp
    Matlab AlexNet 识别花
    minutia cylinder code MCC lSSR 匹配算法
    Gabor filter for image processing and computer vision
    MATLAB 去掉数组里面不要的元素
    NBIS指纹特征提取与匹配软件使用
  • 原文地址:https://www.cnblogs.com/blueoverflow/p/4735022.html
Copyright © 2011-2022 走看看