Mysql儲存引擎及選擇方法,mysql儲存引擎
0x00 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一樣,是表鎖;並且不支援事務性。
0x01 如何選擇合適的儲存引擎採用MyISAM引擎
- R/W > 100 : 1並且Update較少 (R/W:讀寫比)
- 並發不高,不需要支援事務
- 表資料量小
- 需要進行全文檢索搜尋
採用InnoDB引擎
- R/W比較小,頻繁更新大欄位
- 表資料量超過千萬,高並發
- 安全性和可用性要求高
採用Memory引擎
- 有足夠的記憶體
- 對資料一致性要求不高,如session/線上人數等
- 需要定期歸檔的資料
0x02 結語
資料庫的選擇,資料庫儲存引擎的選擇,以及資料庫的最佳化,就像是一門藝術,它沒有好與壞之分,只有適合與不適合。一個項目需要考慮的因素很多,如何去權衡幾個因素之間的權重,如何找到一個最優解,真的需要長時間的經驗積累,資料庫的學習之路漫漫,堅持,再堅持!
原文作者:我才是二亮
原文連結:http://www.2liang.me/archives/254
轉載必須在本文中標註並保留原文連結、作者等資訊。