我想將一個非常大的SQL文件導入到MySql(30GB)中。MYSQL:導入big db時出問題(很慢)
我已經嘗試bigdump.php(一些外鍵錯誤)腳本和簡單的導入。之後,我試圖通過命令行來做到這一點:
(mysql -u username -p database_name < file.sql)
2小時後我有一個9 GB分貝。然後再過10個小時,我有一個10.1 GB的數據庫。
看來,現在進程正在運行,但非常緩慢(200000行/ 100MB每小時)。
如何解決這個問題? 謝謝
我想將一個非常大的SQL文件導入到MySql(30GB)中。MYSQL:導入big db時出問題(很慢)
我已經嘗試bigdump.php(一些外鍵錯誤)腳本和簡單的導入。之後,我試圖通過命令行來做到這一點:
(mysql -u username -p database_name < file.sql)
2小時後我有一個9 GB分貝。然後再過10個小時,我有一個10.1 GB的數據庫。
看來,現在進程正在運行,但非常緩慢(200000行/ 100MB每小時)。
如何解決這個問題? 謝謝
這是最有可能歸因於MySQL需要檢查每一行鍵約束。但是由於你(希望)已經知道該文件不包含約束違規,所以你可能想關閉一些檢查。 MySQL有一個關於Bulk Data Loading for InnoDB Tables和Speed of INSERT Statements的手冊頁。
你通常想要做的就是將這些命令到你的.sql文件的頂端什麼:
SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
而這些在底部:
COMMIT;
SET unique_checks=1;
SET foreign_key_checks=1;
你可以在MySQL做到這一點CLI沒有直接編輯.sql文件:
SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
SOURCE yourbigfile.sql;
COMMIT;
SET unique_checks=1;
SET foreign_key_checks=1;
注意,這無線不會與bigdump.php一起工作,因爲該腳本不會記住每個塊之間的這些設置。我不認爲bigdump.php會在包含外鍵的轉儲中運行得很好。
嘗試壓縮數據庫,然後通過命令行上傳它。
什麼是存儲引擎? – vitozev
存儲引擎是innodb – name