Mysql存儲引擎及選擇方法

0x00 Mysql數據庫經常使用存儲引擎

Mysql數據庫是一款開源的數據庫,支持多種存儲引擎的選擇,好比目前最經常使用的存儲引擎有:MyISAM,InnoDB,Memory等。sql

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:讀寫比)session

  • 併發不高,不須要支持事務併發

  • 表數據量小高併發

  • 須要進行全文搜索性能

採用InnoDB引擎

  • R/W比較小,頻繁更新大字段學習

  • 表數據量超過千萬,高併發優化

  • 安全性和可用性要求高

採用Memory引擎

  • 有足夠的內存

  • 對數據一致性要求不高,如session/在線人數等

  • 須要按期歸檔的數據

0x02 結語

數據庫的選擇,數據庫存儲引擎的選擇,以及數據庫的優化,就像是一門藝術,它沒有好與壞之分,只有適合與不適合。一個項目須要考慮的因素不少,如何去權衡幾個因素之間的權重,如何找到一個最優解,真的須要長時間的經驗積累,數據庫的學習之路漫漫,堅持,再堅持!

原文做者:我纔是二亮

原文連接:http://www.2liang.me/archives/254轉載必須在正文中標註並保留原文連接、做者等信息。

相關文章
相關標籤/搜索