程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql存儲引擎及選擇方法

Mysql存儲引擎及選擇方法

編輯: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 結語

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved