Mysql

MyISAM 和 InnoDB 表的連接性能

  • January 14, 2011

我正在考慮在我的 mysql 伺服器中將一些表從 MyISAM 轉換為 InnoDB。這些表肯定會從更改中受益,因為大量的寫入請求來自這些表,同時也有相當多的讀取請求。

但是,它們通常與一些幾乎沒有任何寫入的表連接在一起。將 MyISAM 和 InnoDB 表連接在一起時是否會降低性能,或者一切正常?

第二個問題:在夜間備份期間,我將數據從 InnoDB 表複製到 MyISAM 表以進行歸檔。在這些備份中,發生了很多寫請求,但是幾乎沒有從這些存檔表中讀取。這些表是否也會從使用 InnoDB 中受益,或者這只是浪費空間和 RAM?

將表從 MyISAM 轉換為 InnoDB 將真正有利於並發寫入和原子鎖定。

InnoDB 和 MyISAM 表的混合在任何情況下都不會影響連接性能,除非這些連接嘗試鎖定完整的 MyISAM 表(極不可能),這樣做EXPLAIN總是有助於診斷查詢。

關於第二個問題,由於它們是備份表並且幾乎從未使用過,因此它們肯定會利用 MyISAM 來盡可能提高寫入性能。

記住這些參數 InnoDB : 非常擅長並發寫入,粒度鎖定,但不太擅長串列寫入,也使用更多記憶體 MyISAM:非常輕,非常擅長串列寫入,不太擅長並發寫入,記憶體佔用更小

引用自:https://serverfault.com/questions/222365