2013-04-08 36 views
0

是否有任何具體範圍的mysqldump的--extended-插入選項,這組1024條語句,然後使用另一個擴展插入..mysqldump的用法與--extended-插入選項

我的表中有超過10個百萬行同時傾銷的數據我沒有改變最大允許的數據包大小(它被設置爲100 MB)和我的表大小超過10 GB

回答

1

我認爲您正在尋找--net_buffer_length和/或--max_allowed_packet。它們是一般的客戶端設置,但它們控制每個包甚至是mysqldump的大小。

+0

時應我認爲增加max_allowed_pa​​cket的 – vidyadhar 2013-04-08 11:37:59

+0

我不知道它設置爲最大的缺點任意的,但我敢肯定,這不可能是完美的事業那麼這將是默認的。你的情況設置高到足以讓你傾倒/負載有不錯的表現,但要確保在兩臺機器的設置匹配。 – 2013-04-08 11:58:14

0

最近我有同樣的問題,與--opt但有很多的記錄,並veeery緩慢的導入導出數據庫1.1GB,我過夜,第二天早上闊葉它仍然進口,所以我決定停下來,重新開始。

發現,這幫助了很多https://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html

我進入mysql外殼就跑:

mysql> SET autocommit=0; 
mysql> SET unique_checks=0; 
mysql> SET foreign_key_checks=0; 
mysql> SOURCE my_database.sql; 

,並開始看到:

Query OK, 12315 rows affected (0.34 sec) 
Records: 12315 Duplicates: 0 Warnings: 0 

等基本跑來跑去36K每秒插入但沒有得到加班費慢..

Query OK, 12305 rows affected (1.68 sec) 
Records: 12305 Duplicates: 0 Warnings: 0 

原因很簡單,自動提交基本刷新到磁盤上的每次插入,即使--extended-insert(默認情況下與--opt),但是儘可能多的,因爲它可以禁用這種意願組提交到磁盤之前,所以我能集團約刷新之前的12k條記錄,其他選項會禁用密鑰檢查以提高性能。

按照這個速度,我能夠進口1300萬條記錄在半小時甚至更少,我沒有檢查:)

1

我知道這是有點obsolate,但如果有人再次獲得卡住,這是什麼會幫助他。在這裏的問題是執行的mysqldump命令將緩衝RAM中的所有表後,MySQL的引擎,並在此之後進行,將寫入到磁盤。當表緩存大於服務器RAM的大小時,我們會遇到問題。於使用--quick選項橋(例如:的mysqldump -h sitename.com -u根-ppass_word -x - 全數據庫--quick> dump_file_name.sql),它會直接寫入到磁盤。除了名稱的選項,這個選項是不是快於BU與緩衝。