MySQL 支持的存儲引擎


參考資料:C語言中文網

存儲引擎:

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

不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎還可以獲得特定的功能。

注: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表示該引擎為當前默認的存儲引擎。

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

 
        

在 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 引擎。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM