事务

事务的ACID特性

  1、Atomic(原子性)

      所有语句作为一个单元全部成功执行或全部取消,不能出现中间状态

  2、Consistent(一致性)

      如果数据库在事务开始时处于一致状态,则在执行该事务期间将保留一致状态

  3、Isolated(隔离性)

      事务之间不相互影响

  4、Durable(持久性)

      事务成功完成后,所做的所有更改都会准确地记录在数据库中,所做的更改不会丢失

事务的生命周期

  1、如何开启事务?

      begin / start transaction;  开启命令 

  2、标准的事务语句

      DML: insert update delete

  3、事务的结束

        commit  提交

        rollback      回滚(提交之后无法回滚)

自动提交机制

  1、查看当前机制

        select @@autocommit; 默认打开

  2、在线修改参数

        set autocommit=0     (会话级别,只修改当前窗口)

        set global autocommit=0      (全局修改,关闭所有会话窗口然后再打开)

        永久修改: vim /etc/ny.cnf  autocommit=0    重启修改

  3、触发隐式提交的情况

        (1) begin  insert...  delete...  [commit]  begin      重复开启begin会隐式提交

        (2) begin  insert...  delete...  [commit]  set...            set命令会隐式提交

        (3)create...   DDL语句、DCL语句、锁定语句。 turncate table...   load data infile...   select for update...

-------------------------------------------------------------------------------------------------------------------------------------------------------

1、概念性名词

  redo log:                     重做日志


  ib_logfile0/ib_logfile1:                   默认50M,轮询使用


  redo log buffer:                    redo内存区域


  ibd:                        存储数据行和索引


  data buffer pool:                  缓冲区池,数据和索引的缓冲


  LSN:                         日志序列号  

     存储再磁盘数据页(ibd),redo log,data buffer pool,redo log buffer。 mysql每次数据库启动,

    都会比较磁盘数据页(ibd)和redo log的LSN,必须要求两者LSN一致,数据库才能正常启动


  WAL(write ahead log):              日志优先写的方式实现持久化   

    日志是优先于数据写入磁盘的


  脏页:   内存脏页,内存中发生了修改,没写入磁盘之前,我们把内存也称之为脏页


  CKPT:   checkpoint,检查点,就是将脏页刷写到磁盘的动作


  TXID:   事务号,Innodb会为每一个事务生成一个事务号,伴随个整个事务


     

  

原文地址:https://www.cnblogs.com/ruan-ruan/p/13967089.html