我有2個表格,我希望更健壯,幸運的是不需要經常快速填寫數據和檢查。所有其他表格將不可避免地爲MyISAM。使用InnoDB和MyIsam表的組合
我可以安全地同時使用兩種(我已經讀過一些令人灰心的問題),而不用擔心引擎之間的差異會影響錯誤或數據?
我有2個表格,我希望更健壯,幸運的是不需要經常快速填寫數據和檢查。所有其他表格將不可避免地爲MyISAM。使用InnoDB和MyIsam表的組合
我可以安全地同時使用兩種(我已經讀過一些令人灰心的問題),而不用擔心引擎之間的差異會影響錯誤或數據?
是的,你可以。
請注意,只有InnoDB
表支持事務處理和FOREIGN KEY
關係。
你可以,但此介紹一些缺點:
所以基本上,我鼓勵你完全切換到InnoDB。那麼你幾乎可以忘記MyISAM,並且不會投入資源,並且可以充分利用InnoDB。任何認爲MyISAM速度更快的人都不是要正確調整InnoDB,要麼是關心的小數據。
MyISAM可以實現更快的表掃描,但是如果您在大型表上執行這些掃描,則會出現更大的問題。
不錯的答案MarkR,我想知道在哪種「邊緣情況下」混合InnoDB/MyIsam數據庫的複製可能會失敗?只使用影響InnoDB和MyIsam表的事務?你認爲在其他情況下安全嗎?謝謝 – 2012-01-23 00:44:26
如果在涉及MyISAM和innodb表的master上發生事務,則提交成功提交,然後在slave上,它的InnoDB部分因死鎖而失敗,事務將被重試。然而,事務的MyISAM部分不能被回滾,所以從服務器將不得不重複它(並且希望沒有什麼不好的事情發生) - 但是會發生一些不好的事情,並且整個從服務器被破壞(複製停止直到手動干預) 。還有很多其他案例,這是我剛發明的一個例子。 – MarkR 2012-01-23 11:33:28