2010-10-26 73 views
0

我正在將數據庫轉儲到文件中(通過gzip管道轉儲),並且需要大約2分鐘才能創建300MB dump.sql.gz文件。MySQL轉儲和加載時間之間的不合理區別

當將文件加載回MySQL(轉儲以放置表開始)時,加載大約需要30分鐘!

什麼可以是這樣一個巨大的時代差異的原因?是否有大幅度減少加載時間的一般技巧?

謝謝。

+1

它更新索引嗎?你可以關閉索引,然後重新加載後重建? – 2010-10-26 09:52:11

回答

1

一個原因是寫入數據庫比讀取數據要龐大得多。數據庫必須確保寫入是事務性的,它必須更新索引,擴展文件等等。

另一個重要的問題是MySQL將數據的SQL版本轉儲,如大文本文件中的大量insert語句。這很慢。來自其他數據庫的備份通常是可以在原始數據庫上寫入的二進制文件,這比一次恢復一行更快。

+0

二進制文件圖像總是恢復得更快 - 沒有什麼可以阻止你在MySQL上做這件事 – symcbean 2010-10-26 12:30:36

+0

是的,但是如果我想從InnoDB到MyISAM呢? – 2010-10-31 15:38:07

0

除了Andomar的回答 - 你會得到一個顯着的改善,在轉儲中添加'--delayed-insert'和'--extended-insert'。

+0

你確定,花了43分鐘,而不是半小時來加載你建議的方式創建的轉儲.. – 2010-10-31 13:21:18

+0

應該更快 - 我很驚訝 - 消除其他原因? – symcbean 2010-11-01 10:20:21