DBMS使用存儲引擎進行數據的建立、查詢、更新、刪除操做。數據庫
不一樣的存儲引擎提供不一樣的存儲機制、索引技巧、鎖定水平等功能,使用不一樣的存儲引擎還能夠得到特定的功能。緩存
MySQL提供了多種存儲引擎,最多見的有3種。安全
MySQL5.5以前的默認的存儲引擎,每一個MyISAM在磁盤上存儲成三個文件,文件名和表名相同,擴展名分別是服務器
(1)frm文件:存儲表的定義併發
(2)MYD文件:存儲表中的數據(記錄)工具
(3)MYI文件:存儲索引。索引保存的是數據文件的指針性能
(1)靜態表(fixed)spa
表中不能包含變長字段(好比VARCHAR, BLOB, TEXT),每一個記錄都是固定的長度。若是MyISAM表中沒有一個變長字段,則默認使用靜態表。操作系統
優勢:存儲迅速,出現故障容易恢復指針
缺點:佔用空間比動態表大。靜態表在進行數據存儲時會按照事先定義的列寬補足空格,但在訪問的時候會去掉補的空格
(2)動態表(dynamic)
可包含變長字段(varchar、blob、text),若是一個MyISAM表包含任何可變長度的字段,或者該表建立時用row_format=dynamic指定,則該表使用動態格式存儲
優勢:佔用空間小
缺點:頻繁的更新、刪除操做會產生碎片,須要按期用optimize table語句或myisamchk -r命令來改善性能,出現故障後較難恢復
(3)壓縮表
由myisampack工具建立,每條記錄都會被單獨壓縮,佔據硬盤空間極小。
MySQL5.5及其以後默認的存儲引擎
能夠在join查詢中混用InnoDB引擎的表、其餘引擎的表
(1)鎖粒度不一樣,InnoDB爲行級鎖,MyISAM爲表級鎖
(2)InnoDB支持外鍵,MyISAM不支持
(3)InnoDB支持事務,MyISAM不支持
(4)InnoDB緩存查詢到的索引、數據,MyISAM只緩存索引
(5)查詢效率MyISAM遠高於InnoDB,尤爲是在數據錶行數多的時候
(6)InnoDB支持在線熱備,有很成熟的在線熱備解決方案
(7)MyISAM的表文件包括:.frm(表定義),.MYI(索引),.MYD(數據),InnoDB的表文件爲.frm(表定義),.ibd(索引、數據)
一句話,MyISAM效率更高、速度更快,InnoDB功能更全、安全性更好、開銷更大。
數據(記錄)不是儲存在文件中,而是存儲在內存中。每一個memory表對應一個.frm文件(表定義、索引)。
一個數據庫中,不一樣的表可使用不一樣的存儲引擎。
使用合適的存儲引擎,會提升數據庫的性能。