• Mysql InnoDB事务


    http://www.cnblogs.com/benshan/archive/2013/01/19/2867244.html

    事务的四个特性

    1、原子性(atomicity)原子性是指整个数据库事务是不可分割的工作单位

    2、一致性(consistency)一致性指事务将数据库从一种状态转变为下一种一致的状态。在事务开始之前和事务结束之后,数据库的完整性约束没有被破坏。

    3、隔离性(isolation)一个事务的影响在该事务提交之前对其他事务都不可见------这通过锁来实现

    4、持久性(durability)事务一旦提交,其结果就是永久性的


    事务的实现

    隔离性通过Mysql InnoDB锁就可以实现,

    原子性、一致性、持久性通过数据库的redo和undo来完成


    隐式提交的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。


     

    对于事务操作的统计

    QPS:question per second,每秒请求数

    TPS:transaction per second,每秒事务处理的能力

    计算TPS的方法是(com_commit+com_rollback)/time,用这种方法的前提是,所有的事务必须都是显式提交的。


    事务的隔离级别

    SQL标准定义的四个隔离级别为:

    1、READ UNCOMMITED

    2、READ COMMITED

    3、REPEATABLE READ

    4、SERIALIZABLE

    查看当前会话的事务隔离级别

     

    查看全局事务隔离级别

     

    在SERIALIZBLE的事务隔离级别,InnoDB存储引擎会对每个SELECT语句后自动加上LOCK IN SHARE MODE,即给每个读取操作加一个共享锁,因此在这个事务隔离级别下,读占用锁了,一致性的非锁定读不再予以支持,一般不再本地事务中使用SERIALIZBLE的隔离级别,SERIALIZABLE的事务隔离级别主要用于InnoDB存储引擎的分布式事务。

    在READ COMMITED的事务隔离级别下,除了唯一性的约束检查以及外键约束的检查需要Gap Lock,InnoDB存储引擎不会使用Gap Lock的锁算法。


    分布式事务

    通过XA事务可以来支持分布式事务的实现,在使用分布式事务时,InnoDB存储引擎必须使用SERIALIZABLE的隔离级别,查看是否启用了XA事务支持(默认开启)

     

    在默认配置下,mysql数据库总是自动提交的。

  • 相关阅读:
    潭州课堂25班:Ph201805201 第十二课 new方法,定制属性访问,描述符与装饰器 (课堂笔记)
    潭州课堂25班:Ph201805201 第十一课 继承,多继承和魔术方法,属性和方法 (课堂笔记)
    Storm笔记
    java代码。继承。。。很戳我的心啊。。不太懂。super的真正用法
    java代码。从来没想过java里的继承是多么的难懂。如哲学
    java代码继承疑惑,请有心人解答
    java冒泡排序
    java数组复制
    java继承。顾不了
    java继承初级
  • 原文地址:https://www.cnblogs.com/xiaobaxiing/p/6539716.html
Copyright © 2020-2023  润新知