存儲引擎是什麼?mysql
MySQL中的數據用各類不一樣的技術存儲在文件中,這些技術中的每一種技術都使用不一樣的存儲機制、索引技巧、鎖定水平而且最終提供普遍的不一樣的功能和能力。經過選擇不一樣的技術,額可以得到額外的速度或功能,改善應用功能。sql
1.InnoDB數據庫
InnoDB是一個健壯的事務性存儲引擎,有行級鎖定和外鍵約束,適用於如下場合:緩存
另外,從MySQL5.7開始InnoDB就成爲默認的存儲引擎。服務器
2.MyISAM併發
MyISAM表是獨立於操做系統的,這說明能夠輕鬆的將其從Windows服務器移植到Linux服務器。每當簡歷一個MyISAM引擎的表時,就會建立三個文件,文件名是表名,三個文件以下:性能
MyISAM引擎不支持事務操做(固然,能夠在service層根據本身的業務需求進行相應的控制),MyISQM存儲引擎適合在如下狀況使用:操作系統
3.MRG_MyISAM日誌
MRG_MyISAM存儲引擎是一組MyISAM表的組合,也就是說它將MyISAM引擎的多個表聚合起來,可是它內部沒有數據,真正的數據依然在MyISAM引擎的表中。blog
例如:同一種類的數據根據時間分爲多張表存儲,這時查詢就會比較麻煩,MRG_MyISAM引擎能夠直接將多個表聚合成一個表統一查詢。
4.MEMORY
Memory存儲引擎的出發點是速度。爲了獲得最快的響應時間,採用的存儲介質是系統內存。雖然在內存中存儲表數據回提供很高的性能,但當mysqld守護進程崩潰時,全部的Memory數據都會丟失。另外,它要求存儲在數據表中的數據使用的是長度不變的格式,這意味着不能使用blob和text這樣的長度可變的數據類型,varchar是一種長度可變的類型,但由於它在MySQL內部看成長度固定不變的char類型,因此可使用。
使用Mymory存儲引擎的場景:
5.CSV
csv存儲引擎是csv格式文件存儲數據。
由於csv文件能夠被Office等軟件直接編輯,可能會出現不規則的狀況,若出現csv文件中內容損壞的狀況,可使用check table或repair table名零零檢查和修復。
6.ARCHIVE
archive是歸檔的意思,僅僅支持插入和查詢兩種操做,在MySQL5.5之後支持索引功能,有很好的壓縮機制,在記錄請求時進行實時壓縮,因此常常被看成倉庫來使用。適合存儲大量的獨立的做爲歷史紀錄的數據,擁有很高的插入速度可是對查詢的支持比較差。
7.BLACKHOLE
黑洞存儲引擎,全部插入的數據不會保存,boackhole引擎表永遠保持爲空。服務器會記錄下Blackhole表的日誌,因此能夠用於複製數據到備份數據庫。
8.PERFORMANCE_SCHEMA
主要用於收集數據庫服務器的性能參數。MySQL用戶不能建立存儲引擎爲PERFORMANCE_SCHEMA的表。
他提供瞭如下的功能:
9.其餘
固然還有其它一些存儲引擎,如FEDERATED、OQGraph、SphinxSE、TokuDB、Cassandra、CONNECT、SQUENCE等。
不一樣的存儲引擎有各自的特色,根據實際狀況選擇合適的存儲引擎,其對好比下圖所示:
查看支持的存儲引擎:
show engines;
show engines\G;
查看mysql存儲引擎系統變量:
修改數據庫引擎:
方式一:
修改配置文件my.ini,在[mysqld]後面添加default-storage-engine=InnoDB,重啓服務,將數據庫默認引擎修改成InnoDB。
方式二:
在建表是指定存儲引擎:
指定test表的存儲引擎爲MyISAM。
方式三:
建表後更改:
更改該表的存儲引擎爲InnoDB。
查看錶使用的存儲引擎:
該如何選擇合適的存儲引擎呢?提供如下幾個選擇的標準,實際狀況靈活選擇: