27、myslq更改为不自动提交


27.1、说明:

默认情况下, MySQL启用自动提交模式(变量autocommit为ON)。这意味着, 只要你执行DML操作的语句,

MySQL会立即隐式提交事务(Implicit Commit)。这个跟SQL Server基本是类似的,与oralce是相反的。


27.2、查看autocommit模式:

1、说明:

由于变量autocommit分会话(session)系统变量与全局(global)系统变量,所以查询的时候,最好区别是会话

系统变量还是全局系统变量。

session:当前会话有效,也就是当前连接。

global:全局,不包含当前连接,之后新获取的连接都会生效,重启mysql服务失效。


2、查看会话系统变量:

show session variables like 'autocommit';


(2)查看全局系统变量:

show global variables like 'autocommit';


(3)补充:

Value的值为ON表示autocommit开启,OFF表示autocommit关闭。


27.3、设置当前会话客户端生效:

1、设置会话系统变量:

set session autocommit=0;


2、查看会话系统变量:

show session variables like 'autocommit';


27.4、设置全局会话客户端有效,重启mysql服务失效:

1、设置全局系统变量:

set global autocommit=0;


2、重新打开一个session连接,查看全局系统变量:

show global variables like 'autocommit';


27.5、配置my.cnf文件,永久生效:

1、编辑my.cnf文件:

[mysqld]

autocommit=0


2、重启mysql服务。


27.5、补充:

还有种配置方式,如下所示,这种方式从MySQL 5.6开始已经不生效了,必须用'autocommit=0'这种方式替换。

1、my.cnf配置文件配置:

[mysqld]

init_connect="SET autocommit=0"


2、全局系统变量配置:

mysql> select version();

mysql> set global init_connect='SET autocommit=0';

/*只能使用global,因为init_connect是全局系统变量

*/

mysql> show global variables like 'init_connect';


27.6、注意:

在不同的连接(session)下,使用'commit;'是相互不影响的。







你可能感兴趣的:(27、myslq更改为不自动提交)