zoukankan      html  css  js  c++  java
  • Mysql InnoDB事务

    事务的四个特性

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

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

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

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


    事务的实现

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

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


    隐式提交的SQL语句

    以下这些SQL语句会产生一个隐式的提交操作,即执行完这些语句后,会有一个隐式的COMMIT操作。

    1、DDL语句:ALTER DATABASE...UPGRADE DATA DIRECTORY NAME、。。。。

    2、用来隐式的修改mysql架构的操作:CREATE USERDROP USERGRANTRENAME USERREVOKESET PASSWORD

    3、管理语句:ANALYZE TABLECACHE INDEXCHECK TABLELOAD INDEX INTO CACHEOPTIMIZE 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 LockInnoDB存储引擎不会使用Gap Lock的锁算法。


    分布式事务

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

     

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

  • 相关阅读:
    jquery UI dialog详解
    jQuery学习笔记
    jQuery源码分析系列:AJAX
    Jquery UI dialog 详解 (中文)
    敏捷个人不错
    总监几句话胜读几年书
    Quartz.NET 任务调度框架
    半解释器模式,解析文本+*/ ()
    向toolStrip控件中添加 日期 控件
    汇编变量类型
  • 原文地址:https://www.cnblogs.com/benshan/p/2867244.html
Copyright © 2011-2022 走看看