Mysql
何時將 mysqldump 與“–no-autocommit”一起使用?我的基準測試顯示恢復速度較慢
--no-autocommit
我在 MacBook(安裝了 Homebrew 最新的 MariaDB)上測試了快速和骯髒與沒有此選項的情況。我將一個 4.6 GB *.sql 文件恢復到一個空的 MariaDB。沒有進行的轉儲--no-autocommit
需要 5m42.072 秒才能恢復,而使用--no-autocommit
它需要 1 分鐘。用於轉儲的其他選項是
--max_allowed_packet=1G --flush-logs --single-transaction --all-databases
set autocommit=0; INSERT INTO ... UNLOCK TABLES; commit;
何時使用
--no-autocommit
?在什麼案例中這個選項有意義?
使用
autocommit=1
,每個INSERT
都將在繼續下一個之前送出。成本更少。但是,如果伺服器崩潰,表將建一半,因為有些INSERTs
會被送出;有些不會。和
SET autocommit=0; INSERT... INSERT... ... commit;
它會將所有資訊放入整個表的重做日誌中。對於大型表,這是更多成本。即使對於一個很小的表(只有一個
INSERT
),由於額外的兩個語句,它也可能會慢一些。