Mysql數據庫是一款開源的數據庫,支持多種存儲引擎的選擇,比如目前最常用的存儲引擎有:MyISAM,InnoDB,Memory等。
MyISAM是Mysql的默認存儲引擎,它支持B-tree/FullText/R-tree索引類型,並且MyISAM的鎖級別是表鎖,表鎖的開銷小,加鎖快;鎖粒度大,發生鎖沖突的概率較高,並發度低;表鎖適合查詢。MyISAM引擎不支持事務性,也不支持外鍵。
InnoDB存儲引擎最大的亮點就是支持事務性,支持回滾。它支持Hash/B-tree索引類型。InnoDB的鎖級別是行鎖,行鎖在鎖定上帶來的消耗大於表鎖,但是在系統並發訪問量較高時,InnoDB整體性能遠高於MyISAM。InnoDB的索引不僅緩存索引本身,也緩存數據,所以InnoDB需要更大的內存。
Memory存儲引擎是一個內存級的存儲引擎,它將所有數據都存儲在內存中,所以它能夠存儲的數據量是比較小的。而因為內存的特性,Memory存儲引擎對於數據的一致性支持教差。Memory的鎖級別和MyISAM一樣,是表鎖;並且不支持事務性。
數據庫的選擇,數據庫存儲引擎的選擇,以及數據庫的優化,就像是一門藝術,它沒有好與壞之分,只有適合與不適合。一個項目需要考慮的因素很多,如何去權衡幾個因素之間的權重,如何找到一個最優解,真的需要長時間的經驗積累,數據庫的學習之路漫漫,堅持,再堅持!