• Innodb核心特性-事务


    1.什么是事务?

    主要针对DML语句(update,delete,insert)
    1.一组数据操作执行步骤,这些步骤被视为一个工作单元:
    	1)用于对多个语句进行分组
    	2)可以在多个客户机并发访问同一个表中的数据时使用
    2.所有步骤都成功或都失败
    	1)如果所有步骤正常,则执行
    	2)如果步骤出现错误或不完整,则取消
    3.和事务相关的两条重要的SQL语句(TCL)
            1)commit:提交
            2)rollback:回滚
    

    2.事务的通俗理解

    1.我们理解的“交易”是什么?
    	1)物与物的交换(古代)
    	2)货币现金与实物的交换(现代1)
    	3)虚拟货币与实物的交换(现代2)
    	4)虚拟货币与虚拟实物交换(现代3)
    
    2.数据库中的“交易”是什么?
    	1)事务又是如何保证“交易”的“和谐”?
    	2)ACID
    

    3.事务的演示

    1.成功事务

    mysql> start transaction;#手动开启事务
    mysql> insert into t_user(name) values('pp');
    mysql> commit;#commit之后即可改变底层数据库数据
    mysql> select * from t_user;
    +----+------+
    | id | name |
    +----+------+
    |  1 | jay  |
    |  2 | man  |
    |  3 | pp   |
    +----+------+
    3 rows in set (0.00 sec)
    
    

    2.事务回滚

    mysql> start transaction;
    mysql> insert into t_user(name) values('yy');
    mysql> rollback;
    mysql> select * from t_user;
    +----+------+
    | id | name |
    +----+------+
    |  1 | jay  |
    |  2 | man  |
    |  3 | pp   |
    +----+------+
    3 rows in set (0.00 sec)
    
    

    4.事务的特性(ACID)

    Atomic(原子性)
    所有语句作为一个单元全部成功执行或全部取消。
    
    Consistent(一致性)
    如果数据库在事务开始时处于一致状态,则在执行该。事务期间将保留一致状态。
    
    Isolated(隔离性)
    事务之间不相互影响。
    
    Durable(持久性)
    事务成功完成后,所做的所有更改都会准确地记录在数据库中。所做的更改不会丢失。
    

    5.事务的控制语句

    START TRANSACTION(或 BEGIN):显式开始一个新事务
    SAVEPOINT:分配事务过程中的一个位置,以供将来引用
    COMMIT:永久记录当前事务所做的更改
    ROLLBACK:取消当前事务所做的更改
    ROLLBACK TO SAVEPOINT:取消在 savepoint 之后执行的更改
    RELEASE SAVEPOINT:删除 savepoint 标识符
    SET AUTOCOMMIT:为当前连接禁用或启用默认 autocommit 模式
    

    6.自动提交

    #临时设置关闭
    mysql> set autocommit=0;
    Query OK, 0 rows affected (0.02 sec)
    
    #永久设置关闭
    [root@db01 world]# vim /etc/my.cnf
    [mysqld]
    autocommit=0
    

    7.事务周期

    1.一个成功事务的生命周期

    begin;
    sql1
    sql2
    sql3
    ...
    commit;
    

    2.一个失败事务的生命周期

    begin;
    sql1
    sql2
    sql3
    ...
    rollback;
    

    3.事务开启的标志?事务结束的标志?

    开启标志:
    -  任何一条DML语句(insert、update、delete)执行,标志事务的开启
    结束标志(提交或者回滚):
    -  提交:成功的结束,将所有的DML语句操作历史记录和底层硬盘数据来一次同步
    -  回滚:失败的结束,将所有的DML语句操作历史记录全部清空
    

    8.事务隐式提交情况

    1.自动提交

    1.现在版本在开启事务时,不需要手工begin,只要你输入的是DML语句,就会自动开启事务。
    2.有些情况下事务会被隐式提交
    

    2.隐式提交

    1.在事务运行期间,手工执行begin的时候会自动提交上个事务
    2.在事务运行期间,加入DDL、DCL操作会自动提交上个事务
    3.在事务运行期间,执行锁定语句(lock tables、unlock tables)
    4.load data infile导出数据成一个文件
    5.在autocommit=1的时候
    
  • 相关阅读:
    角色转变
    参加Google™ Code Jam 中国编程挑战赛(1)
    开始学习研究Infragistics NetAdvantage For ASP.NET
    建立资料库
    参加Google™ Code Jam 中国编程挑战赛(2)
    极度郁闷,上网时间被限定!
    在Win7下Visual Studio如何使用IIS进行调试
    jQuery 第二课:操作包装集元素
    将DataTable导出到Excel
    CSS选择符
  • 原文地址:https://www.cnblogs.com/Applogize/p/13347140.html
Copyright © 2020-2023  润新知