• MySQL事务的开启与提交,autocommit自动提交功能


    对于一个MySQL数据库(InnoDB),事务的开启与提交模式无非下面这两种情况:

    1、若参数autocommit=0,事务则在用户本次对数据进行操作时自动开启,在用户执行commit命令时提交,用户本次对数据库开始进行操作到用户执行commit命令之间的一系列操作为一个完整的事务周期。
    若不执行commit命令,系统则默认事务回滚。总而言之,当前情况下事务的状态是需要手动去提交。

    2、若参数autocommit=1(系统默认值),事务的开启与提交又分为两种状态:

    2.1、手动提交:autocommit=0
    当用户执行start transaction命令时(事务初始化),一个事务开启,当用户执行commit命令时当前事务提交。
    从用户执行start transaction命令到用户执行commit命令之间的一系列操作为一个完整的事务周期。
    若不执行commit命令,系统则默认事务回滚。

    2.2、自动提交:autocommit=1
    如果用户在当前情况下(参数autocommit=1)未执行start transaction命令而对数据库进行了操作,系统则默认用户对数据库的每一个操作为一个孤立的事务,
    也就是说用户每进行一次操作系都会即时提交或者即时回滚。这种情况下用户的每一个操作都是一个完整的事务周期。

    =================================

    设置autocommit开启和关闭的方法:
    用户可以将自动提交功能强制置为OFF。这样用户执行SQL语句后将不会被提交了,而执行COMMIT命令才提交,执行ROLLBACK命令回滚。

    查看当前自动提交功能状况:
    show variables like 'autocommit';  
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | autocommit    | ON    |
    +---------------+-------+
    1 row in set (0.06 sec)

    临时生效设置方法:
    下面是将自动提交功能置为ON以及置为OFF的具体语法。
    将自动提交功能置为ON
    SET AUTOCOMMIT=1;

    将自动提交功能置为OFF
    SET AUTOCOMMIT=0;

    永久生效设置方法:
    通过修改配置文件my.cnf文件,通过vim编辑my.cnf文件,在[mysqld](服务器选项下)添加:
    autocommit=0

  • 相关阅读:
    释放下一代网络应用的能量[转载]
    帮助创建未来的 .NET 客户端开发
    ASP.NET Ajax替代品AjaxWidgets
    Microsoft Surface
    有意思的《致招商银行的公开信》行动!
    Applying DomainDriven Design and Patterns(ADDDP) With examples in C# and .NET
    Silverlight ASP.NET control
    StructureMap 轻量IOC框架
    DDay.iCal an iCalendar class library
    Mono ASP.NET 上几个性能调优技巧
  • 原文地址:https://www.cnblogs.com/deverz/p/6547866.html
Copyright © 2020-2023  润新知