Mysql
使用 MyISAM 讀取數據,使用 InnoDB 寫入數據
我從性能的角度閱讀了很多關於 MyISAM 和 InnoDB 比較的文章,我決定使用 MyISAM 讀取數據,使用 InnoDB 寫入數據。
我想使用兩個結構,如下圖所示。兩個相同(同步)的數據庫,但表引擎不同。
您對這種結構有何建議? 這種設計有什麼缺點?
我建議不要使用它。考慮:
如果在兩個單獨的伺服器上,這只會有一些優勢(當然,在同一個 MySQL 伺服器上混合兩者沒有意義,因為讀取和寫入都將發生在兩者上)
這意味著您將遵循 RolandoMySQLDBA 的建議,並使用 MyISAM 從站設置 InnoDB 主站。
你的 InnoDB 表上有外鍵嗎?如果是這樣,你就會遇到完整性問題。如果您碰巧有
ON DELETE CASCADE
或ON DELETE SET NULL
- 準備好壞消息 - 級聯將不會在從站上傳播。請參閱:外鍵缺失對複制從屬設備的影響好的,所以也許它只是一張表,沒有外鍵。但是隨後您將繼承 MyISAM 的所有其他缺點,例如可能無法從崩潰中恢復。交易將無法進行;從站可能會發現自己試圖對尚未真正從崩潰中恢復的表執行查詢;包含不正確的數據。您可能會遇到複製失敗。
Phil 的評論也非常有效:通過同步表,您實際上意味著對 InnoDB 表的任何寫入都必須傳播到您的 MyISAM 表。這意味著相同數量的寫作。
如果您願意放寬一些限制,例如每隔一段時間只批處理(不知何故?)寫入從屬伺服器,那麼這更有意義。
所以,一般來說,雖然解決方案可以工作,但你會一直頭疼不已。