Mysql
MyISAM 和 InnoDB 表的連接性能
我正在考慮在我的 mysql 伺服器中將一些表從 MyISAM 轉換為 InnoDB。這些表肯定會從更改中受益,因為大量的寫入請求來自這些表,同時也有相當多的讀取請求。
但是,它們通常與一些幾乎沒有任何寫入的表連接在一起。將 MyISAM 和 InnoDB 表連接在一起時是否會降低性能,或者一切正常?
第二個問題:在夜間備份期間,我將數據從 InnoDB 表複製到 MyISAM 表以進行歸檔。在這些備份中,發生了很多寫請求,但是幾乎沒有從這些存檔表中讀取。這些表是否也會從使用 InnoDB 中受益,或者這只是浪費空間和 RAM?
將表從 MyISAM 轉換為 InnoDB 將真正有利於並發寫入和原子鎖定。
InnoDB 和 MyISAM 表的混合在任何情況下都不會影響連接性能,除非這些連接嘗試鎖定完整的 MyISAM 表(極不可能),這樣做
EXPLAIN
總是有助於診斷查詢。關於第二個問題,由於它們是備份表並且幾乎從未使用過,因此它們肯定會利用 MyISAM 來盡可能提高寫入性能。
記住這些參數 InnoDB : 非常擅長並發寫入,粒度鎖定,但不太擅長串列寫入,也使用更多記憶體 MyISAM:非常輕,非常擅長串列寫入,不太擅長並發寫入,記憶體佔用更小