2015-10-01 13 views
0

我想將一個非常大的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每小時)。

如何解決這個問題? 謝謝

+0

什麼是存儲引擎? – vitozev

+0

存儲引擎是innodb – name

回答

0

這是最有可能歸因於MySQL需要檢查每一行鍵約束。但是由於你(希望)已經知道該文件不包含約束違規,所以你可能想關閉一些檢查。 MySQL有一個關於Bulk Data Loading for InnoDB TablesSpeed 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會在包含外鍵的轉儲中運行得很好。

0

嘗試壓縮數據庫,然後通過命令行上傳它。