我有一個最初使用MyISAM設置的模式。我之間有沒有定義爲外鍵的表之間的關係,但我會鏈接表與連接等。顯然沒有級聯刪除/更新等規則...在MySQL中將MyISAM轉換爲InnoDB
我重新創建相同的數據庫模式與InnoDB,但這次我把外鍵放入創建語句並定義了更新/刪除規則。
我使用PHP從CSV文件中將大約200,000條記錄加載到數據庫中。它最初需要幾分鐘時間,但自從我交換到InnoDB後,PHP腳本在10分鐘後超時,只處理了約7%的CSV文件。
我很想回到沒有關係的MyISAM,但是更好的解決方案(如果可能的話)是在初始填充數據庫時使用MyISAM,然後切換回InnoDB並讓MySQL修復關係。我不知道這是否可行,但我認爲如果是這樣,MySQL可以修復它自己的內部數據結構,而不是逐個PHP插入。
需要考慮的另一件事是,大約每年一次,我們需要重新載入一組200,000條記錄並確定哪些記錄發生了變化。當我們需要這樣做時,可能無法從一臺引擎切換到另一臺引擎。
任何指針?
MySQL的版本?另外,直接回答:http://stackoverflow.com/questions/2167522/innodb-takes-over-an-hour-to-import-600mb-file-myisam-in-a-few-minutes/2167641#2167641 –
MySQL Version 5.5.8 – Ozzah
您是否修改innodb變量以獲得更好的性能,還是全部使用默認設置? –