天天看點

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';

27、myslq更改為不自動送出

(2)檢視全局系統變量:

show global variables like 'autocommit';

27、myslq更改為不自動送出

(3)補充:

Value的值為ON表示autocommit開啟,OFF表示autocommit關閉。

27.3、設定目前會話用戶端生效:

1、設定會話系統變量:

set session autocommit=0;

2、檢視會話系統變量:

show session variables like 'autocommit';

27、myslq更改為不自動送出

27.4、設定全局會話用戶端有效,重新開機mysql服務失效:

1、設定全局系統變量:

set global autocommit=0;

2、重新打開一個session連接配接,檢視全局系統變量:

show global variables like 'autocommit';

27、myslq更改為不自動送出

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();

27、myslq更改為不自動送出

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

27、myslq更改為不自動送出

/*隻能使用global,因為init_connect是全局系統變量

27、myslq更改為不自動送出

*/

mysql> show global variables like 'init_connect';

27、myslq更改為不自動送出

27.6、注意:

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

繼續閱讀