首頁 > mysql教程 閱讀:0更新時間:2020-03-28 04:05:56

MySQL存儲引擎精講(附帶各種存儲引擎的對比)

接下來介紹一下存儲引擎的基本概念、mysql 支持的存儲引擎、存儲引擎的選擇以及操作默認存儲引擎。

什么是存儲引擎

數據庫存儲引擎是數據庫底層軟件組件,數據庫管理系統使用數據引擎進行創建、查詢、更新和刪除數據操作。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎還可以獲得特定的功能。

現在許多數據庫管理系統都支持多種不同的存儲引擎。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 等??梢允褂?code>SHOW ENGINES語句查看系統所支持的引擎類型,結果如圖所示。

MySQL數據庫中的存儲引擎
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 存儲引擎:
  • 如果要提供提交、回滾和恢復的事務安全(ACID 兼容)能力,并要求實現并發控制,InnoDB 是一個很好的選擇。
  • 如果數據表主要用來插入和查詢記錄,則 MyISAM 引擎提供較高的處理效率。
  • 如果只是臨時存放數據,數據量不大,并且不需要較高的數據安全性,可以選擇將數據保存在內存的 MEMORY 引擎中,MySQL 中使用該引擎作為臨時表,存放查詢的中間結果。
  • 如果只有 INSERT 和 SELECT 操作,可以選擇Archive 引擎,Archive 存儲引擎支持高并發的插入操作,但是本身并不是事務安全的。Archive 存儲引擎非常適合存儲歸檔數據,如記錄日志信息可以使用 Archive 引擎。

提示:使用哪一種引擎要根據需要靈活選擇,一個數據庫中多個表可以使用不同的引擎以滿足各種性能和實際需求。使用合適的存儲引擎將會提高整個數據庫的性能。

MySQL 默認存儲引擎

InnoDB 是系統的默認引擎,支持可靠的事務處理。

使用下面的語句可以修改數據庫臨時的默認存儲引擎

SET default_storage_engine=< 存儲引擎名 >

例如,將 MySQL 數據庫的臨時默認存儲引擎修改為 MyISAM,輸入的 SQL 語句和運行結果如圖所示。

修改MySQL數據庫中的默認存儲引擎
此時,可以發現 MySQL 的默認存儲引擎已經變成了 MyISAM。但是當再次重啟客戶端時,默認存儲引擎仍然是 InnoDB。

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

国产亚洲欧美日韩