mysql支持的存儲引擎html
一:查詢數據庫支持的存儲引擎mysql
執行: show engines;sql
說明數據庫
engine:引擎名稱。服務器
suppot:是否支持。session
comment:說明。併發
transactions:是夠支持事務。編輯器
xa:是否支持XA事務。函數
savepoints:是否支持保存savepoints之間的內容。post
二:經常使用的引擎的介紹(經常使用的MyISAM和InnoDB)
.frm文件 //存儲表結構的,任何存儲引擎都具有的。
1:MyISAM
mysql5.5以前默認的存儲引擎,由MYD和MYI組成。
查看數據庫的data目錄/數據庫名稱/,在查找相對應的表名。
frm,myd,myi這三個結尾的文件。
.myd //數據庫文件
.myi //索引文件 又叫非彙集索引
特性:
併發性與鎖級別-表解鎖
支持全文索引
支持數據壓縮 命令:進入到mysql的bin文件夾, .\myisampack.exe -b -f "須要壓縮的test.MYI地址" (此命令實在Windows運行)。
運行完之後,會出現一個以OLD結尾的文件,刪除OLD可能會出現問題。須要恢復 CHECK table 表名,REPAIR table 表名
適用場景:
非事務的類型
只讀類應用,讀取數據的速度快
空間類型(座標,空間函數)
2:innodb
mysql5.5之後默認的存儲引擎,innodb_file_per_table on:表示獨立表空間,OFF:表示系統表空間。5.6以前是系統表空間,以後爲獨立表空間。
獨立表空間:.frm .ibd 存儲數據+索引。 能夠經過 optimize table 表名 .ibd收縮數據文件,同時能夠向多個文件刷新數據。
系統表空間:.frm是放在數據庫的文件下的。 .ibdata1是放在data文件夾下的,表公用的,會產生IO的瓶頸。 系統表空間沒法簡單的收縮文件大小
建議使用獨立表空間。
特性:
是一種事務性存儲引擎。徹底支持事務的ACID特性。執行行級鎖,併發程度高。Redo Log和Undo Log。
適用場景:
大多數的OLTP應用。
比較
3:CSV
數據以文本方式存儲,表的字段不能爲空,不能有主鍵。
.frm , .csv數據的內容, .csm存儲表的元數據 。
使用文本編輯器能夠直接編輯.csv數據,而後保存,在數據庫裏面執行flush tables;
注:要在最後一行數據回車一下,要否則最後一條數據不展現。
在excel裏面操做提示兼容性問題,沒法操做成功,編輯完之後修復一下,多是excel版本的問題吧。
特色:
以CSV格式進行數據存儲,全部列的字段都不能爲null,不支持索引,能夠對數據文件在線編輯。
4:Archive
以zlib對錶數據進行壓縮,磁盤I/O更少,數據存儲在.ARZ。
.frm , .ARZ數據的內容。
特色:
只支持insert和select操做,只容許在自增ID列上加索引。
使用場景:
日誌和數據採集應用
5:Memory
在data文件夾裏面只有一個frm。
數據保存在內存中,支持hash索引和BTree索引,全部字段都是固定的長度varchar(10)=char(10),不支持Blog和Text等字段
使用表級索,最大有max_heap_table_size 決定。 重啓會丟失數據。
在系統使用臨時表的時候,超過限制會使用MyISAM,未超過的時候使用Memory
臨時表:在同一個session(會話)裏面,才能使用。重啓服務會丟失數據。
應用場景:mysql後臺服務使用Memory
6:Federated
訪問遠程的數據庫表,本地只保存數據庫結構和鏈接信息,數據保存在遠程的服務器中。在本地只保存.frm
默認不是開啓的引擎,在my.ini 增長 federated=1,重啓。
只能用命令建立。create table ‘aaa’(裏面的字段,要和鏈接的服務器同樣) engine=federated connection='mysql://用戶名:密碼@地址:IP/數據庫名/表名'