mysql禁用autocommit,以及遇到的问题(转)
MySQL的autocommit(自动提交)默认是开启,其对mysql的性能有一定影响,举个例子来说,如果你插入了1000条数据,mysql会commit1000次的,如果我们把autocommit关闭掉,通过程序来控制,只要一次commit就可以了。
1,我们可以通过set来设置autocommit
- mysql> set global init_connect="set autocommit=0"; //提示你用权限更高的财户来设置
- ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation
- mysql> set autocommit=0;
- Query OK, 0 rows affected (0.00 sec)
- mysql> select @@autocommit; //查看一下autocommit的设置
- +--------------+
- | @@autocommit |
- +--------------+
- | 0 |
- +--------------+
- 1 row in set (0.00 sec)
2,我们可以修改mysql的配置文件my.cnf来关闭autocommit
- [mysqld]
- init_connect='SET autocommit=0' //在mysqld里面加上这些内容
用第二种方法关,有一点要注意,连接mysql用户的权限不能大于启动mysql的用户的权限,不然init_connect='SET autocommit=0'根本不会启作用,也不会报任何错误,汗一个先。看以下实例
- zhangy@ubuntu:~$ mysql -umysql
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 1
- Server version: 5.5.2-m2-log Source distribution
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- mysql> select @@autocommit; //mysql是启动用户,关闭autocommit成功
- +--------------+
- | @@autocommit |
- +--------------+
- | 0 |
- +--------------+
- 1 row in set (0.00 sec)
- mysql> Ctrl-C -- exit!
- Aborted
- zhangy@ubuntu:~$ mysql -uroot
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 2
- Server version: 5.5.2-m2-log Source distribution
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- mysql> select @@autocommit; //用root财户启动,不成功。
- +--------------+
- | @@autocommit |
- +--------------+
- | 1 |
- +--------------+
- 1 row in set (0.00 sec)
这个会不会是mysql的bug呢?我在网上找了找这方面的问题,还真有。部分内容如下:
If a user has SUPER privilege, init_connect will not execute
(otherwise if init_connect will a wrong query no one can connect to server).
Note, if init_connect is a wrong query, the connection is closing without any errors
and next command will clause 'lost connection' error.
里面有一点说的很清楚If a user has SUPER privilege, init_connect will not execute,如果用户有更高级的权限,init_connect根本不会执行。
http://blog.csdn.net/ying_593254979/article/details/12095169
mysql禁用autocommit,以及遇到的问题(转)的更多相关文章
- mysql禁用autocommit,以及遇到的问题
原文地址:http://blog.51yip.com/mysql/1230.html http://blog.csdn.net/ying_593254979/article/details/12095 ...
- 关于mysql 的 autoCommit 参数
首先描述一下这个参数的作用. 这个参数 默认是开启的. 开启以后再命令敲的sql 会自动提交.如果关闭,就必须手动 commit. 查看 这个 自动提交状态. SELECT @@autocommit; ...
- Mysql中autocommit的用法
定义 Mysql文档原文:SET autocommit disables or enables the default autocommit mode for the current session. ...
- MySQL 的 autocommit
在自动提交模式(autocommit=ON)下提交事务: •在自动提交模式下,每个SQL语句都是一个独立的事务. –mysql>insert into ACCOUNTS values(1,'To ...
- 【mysql】autocommit=0后,commit, rollback无效
之前在[mysql]MySQLdb中的事务处理中用autocommit和commit()以及rollback()实现了事务处理. 但后来,用同样的代码在另一个数据库中运行却失败了.找了一个下午的原因. ...
- 从知乎了解到,为什么Mysql禁用存储过程、外键和级联?
打开帖子直接一张醒目的图,是阿里巴巴的Java开发手册对Mysql相关的要求. 看看下面的回复 灵剑 存储过程没有版本控制,版本迭代的时候要更新很麻烦.存储过程如果和外部程序结合起来用,更新的时候很难 ...
- mysql事务,SET AUTOCOMMIT,START TRANSACTION
http://yulei568.blog.163.com/blog/static/135886720071012444422/ MyISAM不支持 START TRANSACTION | BEGIN ...
- mysql事务,START TRANSACTION, COMMIT和ROLLBACK,SET AUTOCOMMIT语法
http://yulei568.blog.163.com/blog/static/135886720071012444422/ MyISAM不支持 START TRANSACTION | BEGIN ...
- mysql java.sql.SQLException: Can't call commit when autocommit=true
java.sql.SQLException: Can't call commit when autocommit=true at com.mysql.jdbc.SQLError.createSQLEx ...
随机推荐
- MySQl 存储过程+游标
DROP PROCEDURE IF exists pro_Insertflightplan_stat; create procedure pro_Insertflightplan_stat(exec ...
- HDU 1222 Wolf and Rabbit(gcd)
HDU 1222 Wolf and Rabbit (最大公约数)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- Qt 5.2.0 和 VS 2012集成
下载两个安装包,后面一个add-in是必需的 Qt 5.2.0 for Windows 64-bit (VS 2012, 590 MB) (Info) Visual Studio Add-in 1.2 ...
- Python之路Day17
算法:冒泡排序.插入排序.快速排序.堆排序 冒泡排序 #! /usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "Q1mi& ...
- C语言之固定格式输出当前时间
固定格式输出当前时间 编程实现将当前时间用以下形式输出:星期 月 日 小时:分:秒 年 代码如下: #include<stdio.h>#include<stdlib.h& ...
- php 判断是否登录
<?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends Action { public function _before_index(){ //做 ...
- IT第二十六天 - Swing、上周总结
IT第二十六天 上午 Swing 1.对于方法的参数如果是int数值类型,应该直接调用该类中的常量属性,而不应该直接填入数字 2.Toolkit类中定义的方法是可以直接访问本地计算机(操作系统)信息的 ...
- java学习之tcp与udp的实现
package com.gh.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...
- hdu 1236 1.3.2排名
排名 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission ...
- hdu 1242 Rescue(bfs)
此刻再看优先队列,不像刚接触时的那般迷茫!这也许就是集训的成果吧! 加油!!!优先队列必须要搞定的! 这道题意很简单!自己定义优先级别! +++++++++++++++++++++++++++++++ ...