Mysql

使用 MyISAM 讀取數據,使用 InnoDB 寫入數據

  • February 25, 2020

我從性能的角度閱讀了很多關於 MyISAM 和 InnoDB 比較的文章,我決定使用 MyISAM 讀取數據,使用 InnoDB 寫入數據。

我想使用兩個結構,如下圖所示。兩個相同(同步)的數據庫,但表引擎不同。

在此處輸入圖像描述

您對這種結構有何建議? 這種設計有什麼缺點?

我建議不要使用它。考慮:

如果在兩個單獨的伺服器上,這只會有一些優勢(當然,在同一個 MySQL 伺服器上混合兩者沒有意義,因為讀取和寫入都將發生在兩者上)

這意味著您將遵循 RolandoMySQLDBA 的建議,並使用 MyISAM 從站設置 InnoDB 主站。

你的 InnoDB 表上有外鍵嗎?如果是這樣,你就會遇到完整性問題。如果您碰巧有ON DELETE CASCADEON DELETE SET NULL- 準備好壞消息 - 級聯將不會在從站上傳播。請參閱:外鍵缺失對複制從屬設備的影響

好的,所以也許它只是一張表,沒有外鍵。但是隨後您將繼承 MyISAM 的所有其他缺點,例如可能無法從崩潰中恢復。交易將無法進行;從站可能會發現自己試圖對尚未真正從崩潰中恢復的表執行查詢;包含不正確的數據。您可能會遇到複製失敗。

Phil 的評論也非常有效:通過同步表,您實際上意味著對 InnoDB 表的任何寫入都必須傳播到您的 MyISAM 表。這意味著相同數量的寫作。

如果您願意放寬一些限制,例如每隔一段時間只批處理(不知何故?)寫入從屬伺服器,那麼這更有意義。

所以,一般來說,雖然解決方案可以工作,但你會一直頭疼不已。

引用自:https://dba.stackexchange.com/questions/32947