什麼時候可以考慮使用MySQL MEMORY引擎

chenfeng發表於2017-03-16
通常使用MEMORY涉及到以下特性:
1.操作相關的短暫的,非重要資料的管理或者cache,當MySQL程式夯住或服務重啟,MEMORY表的資料就會丟失。
2.記憶體儲存訪問快速,並且延遲低。資料可以填充到記憶體不會導致作業系統swap到虛擬記憶體。
3.只讀或者讀多的資料訪問模式。
MySQL Cluster提供和MEMORY相似的功能來提高效能,但提供MEMORY不支援的額外的特性,例如:
1.行級鎖並且多執行緒操作,client降低爭用。
2.可擴充套件性
3.資料永續性的後臺操作
4.shared-nothing的結構,多host操作不會有單點錯誤。
5.自動資料分佈,應用程式不需要參與使用者sharding或者分割槽解決方案。
6.支援可變長欄位,MEMORY不支援。

如果MEMORY表hash索引的列包含在很多索引中,date表欄位的值會影響效能。效能影響和被幾個索引引用有關。你可以使用b樹索引來避免問題。
MEMORY表可以是非唯一的key。
索引列的值可以是null


MEMORY表的物理特性:
MEMORY儲存引擎都有個相關的磁碟檔案,用來儲存表定義。表名.frm。
MEMORY表有以下幾個特性:
1.MEMORY表使用小的block,表使用動態hash儲存,沒有額外的key空間。刪除行把空間放到一個連結串列。當你插入的時候會重新使用。MEMORY表在插入和刪除混合沒有什麼問題。
2.記憶體表固定長度。可變長度型別比如varchar也以固定長度儲存。
3.記憶體表不能包含BLOB,TEXT列
4.MEMORY支援AUTO_INCREMENT列
5.沒有臨時記憶體表可以被所有客戶端共享,可其他臨時表一樣。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2135446/,如需轉載,請註明出處,否則將追究法律責任。

相關文章