Mysql存儲引擎及選擇方法

jopen 9年前發布 | 13K 次閱讀 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>

    采用InnoDB引擎

    • R/W比較小,頻繁更新大字段
    • 表數據量超過千萬,高并發
    • 安全性和可用性要求高
    • </ul>

      采用Memory引擎

      • 有足夠的內存
      • 對數據一致性要求不高,如session/在線人數等
      • 需要定期歸檔的數據
      • </ul>

        0×02 結語

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

        原文作者:我才是二亮
        原文鏈接:http://www.2liang.me/archives/254

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!