--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
会被提交;有些不会。和
它会将所有信息放入整个表的重做日志中。对于大型表,这是更多开销。即使对于一个很小的表(只有一个
INSERT
),由于额外的两个语句,它也可能会慢一些。