签到成功

知道了

CNDBA社区CNDBA社区

MariaDB 关闭 autocommit 功能

2018-02-06 16:08 3119 0 原创 MySQL
作者: dave

MysqL在执行一句数据库操作命令的时候,通常都是自动提交的。常用引擎下有两种: MyIsam和InnoDB,MyIsam是不支持事务处理的,但InnoDB支持,但InnoDB在不开启事务处理的情况下执行语句也会自动提交,因为MysqL有一个机制控制,那就是自动提交机制,在默认情况下是开启的,我们在开发过程中有些场景需要关闭自动提交来保证数据的一致性。http://www.cndba.cn/dave/article/2632http://www.cndba.cn/dave/article/2632http://www.cndba.cn/dave/article/2632

http://www.cndba.cn/dave/article/2632

  • 关闭方式有两种,一种是在控制台下命令执行,一种是在Mysql的配置文件中关闭。*

1 会话级关闭自动提交

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.00 sec)

mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

以上设置在会话级别生效,当数据库重启后设置失效,并且对其他会话不起作用。

http://www.cndba.cn/dave/article/2632
http://www.cndba.cn/dave/article/2632

2 配置文件关闭

通过修改配置文件my.cnf文件,通过vim编辑my.cnf文件,在[mysqld]添加:
autocommit=0
然后重启mysql服务生效。

http://www.cndba.cn/dave/article/2632
http://www.cndba.cn/dave/article/2632

[root@http://www.cndba.cn/dave cndba]# service mysql restart
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
chdir: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
Shutting down MySQL..                                      [  OK  ]
Starting MySQL.180130 23:33:39 mysqld_safe Logging to '/mysql/data/Dave.err'.
180130 23:33:39 mysqld_safe Starting mysqld daemon with databases from /mysql/data
                                                           [  OK  ]
[root@http://www.cndba.cn/dave cndba]#

[root@http://www.cndba.cn/dave mysql]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or /g.
Your MySQL connection id is 12
Server version: 5.5.5-10.2.12-MariaDB-log MariaDB Server

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | OFF   |
+---------------+-------+
1 row in set (0.01 sec)

通过配置文件的方法对所有用户都永久关闭自动提交功能。http://www.cndba.cn/dave/article/2632http://www.cndba.cn/dave/article/2632

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2262
    原创
  • 3
    翻译
  • 579
    转载
  • 192
    评论
  • 访问:8089878次
  • 积分:4350
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ