2009-01-19 37 views
1

嗨,我使用的是MySQL 5.0.x的更改表從MyISAM數據InnoDB的使系統緩慢

我剛纔已經改變了很多的表從MyISAM數據InnoDB的

有了它花費了大約的MyISAM表1分鐘安裝我們的數據庫 隨着InnoDB的花費大約15分鐘安裝相同的數據庫

爲什麼InnoDB的時間這麼長?

我該怎麼做才能加快速度?

數據庫安裝執行以下步驟

1)滴眼液的模式

2)創建的模式

3)創建表

4)創建存儲過程

5)插入默認數據

6)通過存儲過程插入數據

編輯:

默認數據的插入花費大部分時間

+0

哪個步驟佔用大部分時間? – Zoredache 2009-01-19 11:53:54

回答

5

修改插入數據的步驟在開始啓動一個事務,並在提交它結束。你會得到改善,我保證。 (如果您有大量數據,則可能需要將事務分解爲每個表)。

如果您的應用程序根本不使用事務,那麼您應該將參數innodb_flush_log_at_trx_commit設置爲2.這會給您很多性能都回來了,因爲幾乎可以肯定會啓用auto_commit,並且這會比InnoDB的默認參數配置的事務產生更多的事務。此設置會在每次提交時停止不必要地刷新磁盤緩衝區。

3

15分鐘似乎並沒有過多的給我。畢竟,這是一次性成本。

我不確定,但我會想象那部分解釋是參照完整性不是免費的。 InnoDB必須做更多的工作來保證它,所以當然需要更多的時間。

也許您的腳本需要更改以在創建表之後添加約束。

+1

也可能考慮使用單個事務而不是自動提交。 – falstro 2009-01-19 12:33:08

+0

@roe - thanks - 單筆交易使事情變得更快 – 2009-01-19 15:15:34

0

像duffymo說的那樣,在插入數據之前禁用你的約束(索引和foreing /主鍵)。

也許你應該通過存儲過程插入數據之前恢復一些指標,如果它使用了很多選擇聲明