你的位置:首页 > 数据库

[数据库]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结束,注意当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!