Mysql存儲引擎及選擇方法
0×00 Mysql數據庫常用存儲引擎
Mysql數據庫是一款開源的數據庫,支持多種存儲引擎的選擇,比如目前最常用的存儲引擎有:MyISAM,InnoDB,Memory等。
MyISAM存儲引擎
MyISAM是Mysql的默認存儲引擎,它支持B-tree/FullText/R-tree索引類型,并且MyISAM的鎖級別是表鎖,表鎖的開銷小,加鎖快;鎖粒度大,發生鎖沖突的概率較高,并發度低;表鎖適合查詢。MyISAM引擎不支持事務性,也不支持外鍵。
InnoDB存儲引擎
InnoDB存儲引擎最大的亮點就是支持事務性,支持回滾。它支持Hash/B-tree索引類型。InnoDB的鎖級別是行鎖,行鎖在鎖定上帶來的消耗大于表鎖,但是在系統并發訪問量較高時,InnoDB整體性能遠高于MyISAM。InnoDB的索引不僅緩存索引本身,也緩存數據,所以 InnoDB需要更大的內存。
Memory存儲引擎
Memory存儲引擎是一個內存級的存儲引擎,它將所有數據都存儲在內存中,所以它能夠存儲的數據量是比較小的。而因為內存的特性,Memory存儲引擎對于數據的一致性支持教差。Memory的鎖級別和MyISAM一樣,是表鎖;并且不支持事務性。
0×01 如何選擇合適的存儲引擎
采用MyISAM引擎
- R/W > 100 : 1并且Update較少 (R/W:讀寫比)
- 并發不高,不需要支持事務
- 表數據量小
- 需要進行全文搜索 </ul>
- R/W比較小,頻繁更新大字段
- 表數據量超過千萬,高并發
- 安全性和可用性要求高 </ul>
- 有足夠的內存
- 對數據一致性要求不高,如session/在線人數等
- 需要定期歸檔的數據 </ul>
采用InnoDB引擎
采用Memory引擎
0×02 結語
數據庫的選擇,數據庫存儲引擎的選擇,以及數據庫的優化,就像是一門藝術,它沒有好與壞之分,只有適合與不適合。一個項目需要考慮的因素很多,如何去權衡幾個因素之間的權重,如何找到一個最優解,真的需要長時間的經驗積累,數據庫的學習之路漫漫,堅持,再堅持!
原文作者:我才是二亮原文鏈接:http://www.2liang.me/archives/254
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!