Mysql

何時將 mysqldump 與“–no-autocommit”一起使用?我的基準測試顯示恢復速度較慢

  • August 30, 2017

--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),由於額外的兩個語句,它也可能會慢一些。

引用自:https://dba.stackexchange.com/questions/184667