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