使用mysql指令匯入mysqldump匯出的檔案時,發現效率異常緩慢。
整個sql檔只有200mb不到,算不上巨量的資料。
相同資料庫平常也經常使用phpmyadmin匯出整個資料庫再匯入,狀況都很正常。
網路上查到要在my.ini 裡的mysqld區段設定以下參數
innodb_buffer_pool_size = 4G
innodb_log_buffer_size = 500M
innodb_log_file_size = 1G
innodb_write_io_threads = 16
innodb_flush_log_at_trx_commit = 0
以上設定是原文作者主機有8G記憶體的前提。
接著在mysqldump匯出的sql檔的最前面加上下列敘述
SET FOREIGN_KEY_CHECKS=0;
SET UNIQUE_CHECKS=0;
SET AUTOCOMMIT=0;
以及最後面加上下列敘述
COMMIT;
總結
前面提到平常也會使用phpmyadmin匯出整個資料庫再匯入,當時的狀況都很正常。
換句話說,原來的my.ini其實應該可以跑得順暢,
因此猜測真正的關鍵應該是加到sql裡的那些敘述。
參考頁面: https://www.its.caltech.edu/~ggrasmeh/slow_mysql_innodb_sqldump_import_solved.html