什麼是存儲引擎?
數據庫存儲引擎是數據庫底層軟件組件,數據庫管理系統使用數據引擎進行建立、查詢、更新和刪除數據操做。不一樣的存儲引擎提供不一樣的存儲機制、索引技巧、鎖定水平等功能,使用不一樣的存儲引擎還能夠得到特定的功能。
如今許多數據庫管理系統都支持多種不一樣的存儲引擎。MySQL 的核心就是存儲引擎。數據庫
InnoDB 事務型數據庫的首選引擎,支持事務安全表(ACID),支持行鎖定和外鍵。MySQL 5.5.5 以後,InnoDB 做爲默認存儲引擎。緩存
MyISAM 是基於 ISAM 的存儲引擎,並對其進行擴展,是在 Web、數據倉儲和其餘應用環境下最常使用的存儲引擎之一。MyISAM 擁有較高的插入、查詢速度,但不支持事務。
MEMORY 存儲引擎將表中的數據存儲到內存中,爲查詢和引用其餘數據提供快速訪問。安全
MySQL 5.7 支持的存儲引擎
MySQL 支持多種類型的數據庫引擎,可分別根據各個引擎的功能和特性爲不一樣的數據庫處理任務提供各自不一樣的適應性和靈活性。在 MySQL 中,能夠利用 SHOW ENGINES 語句來顯示可用的數據庫引擎和默認引擎。
MySQL 提供了多個不一樣的存儲引擎,包括處理事務安全表的引擎和處理非事務安全表的引擎。在 MySQL 中,不須要在整個服務器中使用同一種存儲引擎,針對具體的要求,能夠對每個表使用不一樣的存儲引擎。
MySQL 5.7 支持的存儲引擎有 InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE 等。服務器
可使用SHOW ENGINES
語句查看系統所支持的引擎類型,結果如圖所示。併發
Support 列的值表示某種引擎是否能使用,YES
表示可使用,NO
表示不能使用,DEFAULT
表示該引擎爲當前默認的存儲引擎。高併發
如何選擇 MySQL 存儲引擎
不一樣的存儲引擎都有各自的特色,以適應不一樣的需求,如表所示。爲了作出選擇,首先要考慮每個存儲引擎提供了哪些不一樣的功能。性能
功能 | MylSAM | MEMORY | InnoDB | Archive |
---|---|---|---|---|
存儲限制 | 256TB | RAM | 64TB | None |
支持事務 | No | No | Yes | No |
支持全文索引 | Yes | No | No | No |
支持樹索引 | Yes | Yes | Yes | No |
支持哈希索引 | No | Yes | No | No |
支持數據緩存 | No | N/A | Yes | No |
支持外鍵 | No | No | Yes | No |
能夠根據如下的原則來選擇 MySQL 存儲引擎:spa
- 若是要提供提交、回滾和恢復的事務安全(ACID 兼容)能力,並要求實現併發控制,InnoDB 是一個很好的選擇。
- 若是數據表主要用來插入和查詢記錄,則 MyISAM 引擎提供較高的處理效率。
- 若是隻是臨時存放數據,數據量不大,而且不須要較高的數據安全性,能夠選擇將數據保存在內存的 MEMORY 引擎中,MySQL 中使用該引擎做爲臨時表,存放查詢的中間結果。
- 若是隻有 INSERT 和 SELECT 操做,能夠選擇Archive 引擎,Archive 存儲引擎支持高併發的插入操做,可是自己並非事務安全的。Archive 存儲引擎很是適合存儲歸檔數據,如記錄日誌信息可使用 Archive 引擎。
提示:使用哪種引擎要根據須要靈活選擇,一個數據庫中多個表可使用不一樣的引擎以知足各類性能和實際需求。使用合適的存儲引擎將會提升整個數據庫的性能。日誌
MySQL 默認存儲引擎
InnoDB 是系統的默認引擎,支持可靠的事務處理。
使用下面的語句能夠修改數據庫臨時的默認存儲引擎code
SET default_storage_engine=< 存儲引擎名 >
注意:將 MySQL 數據庫的臨時默認存儲引擎修改成 其餘的存儲引擎時 ,可是當再次重啓客戶端時,默認存儲引擎仍然是 InnoDB。