mysql事务详解

一、事务的概念

  事务是一个或多个数据库操作(dml语句),要么全部成功,要么全部回滚,事务是由事务日志来实现的,事务日志有redo log 和undo log

二、事务的作用

  为了保证复杂数据库操作数据的一致性,尤其是在并发访问数据时,mysql主要用于处理操作量大,复杂的数据

三、事务的特点

  1.原子性( Atomicity 不可分割性):事务的数据操作,要么同时成功,要么回滚到执行前的状态,向什么都没发生一样

  2.隔离性(Isolation ):多个事务之间是相互隔离,互不影响的,多个事务可以同时对数据库数据进行读写和修改操作,隔离性可以防止多个事务交叉执行导致数据不一致

  3.一致性(Consistency):在事务执行前和执行后,数据的状态保持一致,不会破坏数据库的完整性

  4.持久性(Durability):在事务提交后,数据会被永久刷新到磁盘中,即使出现故障,也不会导致数据消失

四、事务的语法 

  1.事务的启动语法

     (1)begin

     (2)start transaction  [修饰符]

        -read only  只读

        -read write 读写 默认

        -with consistent snapshot 一致性读

  2.标准的事务语句

   DML语句(insert  delete update)

  3.事务结束

   (1)commit;

   (2)rollback;

五、事务的自动提交机制

  mysql> select @@autocommit;

  +--------------+
  | @@autocommit |
  +--------------+
  | 1 |
  +--------------+

  在线修改参数:
  (1) 会话级别:
  mysql> set autocommit=0;
  及时生效,只影响当前登录会话
  (2)全局级别:
  mysql> set global autocommit=0;
  断开窗口重连后生效,影响到所有新开的会话
  (3)永久修改(重启生效)
  vim /etc/my.cnf
  autocommit=0

六、触发隐式提交的几种情况

  1.事务开始后,执行DML语句时,中间插入DDL语句,导致事务提交

   导致提交的非事务语句:

   DDL语句: (ALTER、CREATE 和 DROP)
     DCL语句: (GRANT、REVOKE 和 SET PASSWORD)
     锁定语句:(LOCK TABLES 和 UNLOCK TABLES)
     导致隐式提交的语句示例:
     TRUNCATE TABLE
     LOAD DATA INFILE
     SELECT FOR UPDATE

七、事务的保存点

  在数据库语句中打几个点,在调用rollback语句时,就可以滚回那个点

  1.语法:

     (1)savepoint [保存点名称]//标记保存点

     (2)rollback  to [保存点名称]//回滚到保存点位置

     (3)release [保存点名称] 删除

原文地址:https://www.cnblogs.com/shi-san/p/13698963.html