mysql的提交問題

2021-08-09 02:44:59 字數 505 閱讀 6570

1、mysql的自動提交設定autocommit,是預設開啟的,每條sql都會開啟乙個事務,自動提交一次,

show variables like '%autocommit%';

大量sql語句批量執行時,比如1w條update語句,

autocommit = on,則同時鎖住的行少,但是頻繁commit,db資源占用大,對外提供的操作效能下降;

autocommit = off,則同時鎖住大批量的行記錄,一次commit,外來的查詢等待較長。

一般建議超過1000條記錄時,以1000條為單位,新增commit,手動提交一次;

2、當乙個update語句,涉及大資料量變更資料庫記錄時,尤其是涉及多表關聯,比如超過1w條記錄的,建議使用儲存過程,用迴圈變數,控制提交頻率,例如,控制500條記錄提交一次。

set v_count = v_count + 1;

if mod(v_count,500) = 0 then 

commit;

end if;

mysql5 7組提交 mysql組提交

當mysql開啟binlog日誌時,會存在乙個內部xa的問題 事務在儲存引擎層redo log的寫入和binlog的寫入一致性問題。mysql通過兩階段提交很好的解決了redo log和binlog一致性問題 第一階段 innodb prepare,持有prepare commit mutex,re...

MySQL的自動提交模式

預設情況下,mysql啟用自動提交模式 變數autocommit為on 這意味著,只要你執行dml操作的語句,mysql會立即隱式提交事務 implicit commit 這個跟sql server基本是類似的。檢視autocommit模式 由於變數autocommit分 會話系統變數與全域性系統變...

Mysql 提交Big sql的過程

此處的big sql指的是單條sql的size 超過innodb log file size,通過構造這樣的測試,來分析mysql的提交過程。做這個分析的起因是我不是很明白,既然mysql需要將被執行的資料首先寫入到redo log file,如果sql 的size 超過innodb log fil...