MySQL 支持的存儲引擎

參考資料:C語言中文網mysql

存儲引擎:sql

數據庫存儲引擎是數據庫底層軟件組件,數據庫管理系統使用數據引擎進行建立、查詢、更新和刪除數據操做。數據庫

不一樣的存儲引擎提供不一樣的存儲機制、索引技巧、鎖定水平等功能,使用不一樣的存儲引擎還能夠得到特定的功能。緩存

注:InnoDB 事務型數據庫的首選引擎,支持事務安全表(ACID),支持行鎖定和外鍵。MySQL 5.5.5 以後,InnoDB 做爲默認存儲引擎。安全

MySQL v5.7支持的存儲引擎:服務器

顯示可用的數據庫引擎和默認引擎的語句:併發

mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

Support 列的值表示某種引擎是否能使用,YES表示能夠使用,NO表示不能使用,DEFAULT表示該引擎爲當前默認的存儲引擎。app

Transactions列的值表示是否支持事務,Yes表示支持,NO表示不支持。ide

 

在 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 存儲引擎:

  • 若是要提供提交、回滾和恢復的事務安全(ACID 兼容)能力,並要求實現併發控制,InnoDB 是一個很好的選擇。
  • 若是數據表主要用來插入和查詢記錄,則 MyISAM 引擎提供較高的處理效率。
  • 若是隻是臨時存放數據,數據量不大,而且不須要較高的數據安全性,能夠選擇將數據保存在內存的 MEMORY 引擎中,MySQL 中使用該引擎做爲臨時表,存放查詢的中間結果。
  • 若是隻有 INSERT 和 SELECT 操做,能夠選擇Archive 引擎,Archive 存儲引擎支持高併發的插入操做,可是自己並非事務安全的。Archive 存儲引擎很是適合存儲歸檔數據,如記錄日誌信息能夠使用 Archive 引擎。
相關文章
相關標籤/搜索