mysql支持的存儲引擎 一:查詢資料庫支持的存儲引擎 執行: show engines; 說明 engine:引擎名稱。 suppot:是否支持。 comment:說明。 transactions:是夠支持事務。 xa:是否支持XA事務。 savepoints:是否支持保存savepoints之間 ...
mysql支持的存儲引擎
一:查詢資料庫支持的存儲引擎
執行: show engines;
說明
engine:引擎名稱。
suppot:是否支持。
comment:說明。
transactions:是夠支持事務。
xa:是否支持XA事務。
savepoints:是否支持保存savepoints之間的內容。
二:常用的引擎的介紹(常用的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/資料庫名/表名'