共計 1671 個字符,預計需要花費 5 分鐘才能閱讀完成。
這篇文章主要講解了“MySQL 數據庫存儲引擎的分類有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“MySQL 數據庫存儲引擎的分類有哪些”吧!
1、簡介 MySQL 中的數據用各種不同的技術存儲在文件 (或者內存) 中。每一種技術都使用不同的存儲機制、索引技巧、鎖定水平并且最終提供廣泛的不同的功能和能力。
通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能。例如,如果你在研究大量的臨時數據,你也許只需要將數據存儲在內存中而不是文件中(內存存儲引擎能夠在內存中存儲所有的表格數據)。又或者,你也許需要一個支持事務處理的數據庫(以確保事務處理不成功時數據的回退能力)。
這些不同的技術以及配套的相關功能在 MySQL 中被稱作存儲引擎(也稱作表類型)
2. 存儲引擎的分類
MySQL 默認配置了許多不同的存儲引擎,可以預先設置或者在 MySQL 服務器中啟用,我們可以根據對數據處理的需求,選擇不同的存儲引擎,從而最大限度的利用 MySQL 強大的功能。
在客戶端使用相關命令顯示所有存儲引擎:show engines;
這里介紹一下常用的存儲引擎
1)innoDB
InnoDB 是一個健壯的事務型存儲引擎,這種存儲引擎已經被很多互聯網公司使用,為用戶操作非常大的數據存儲提供了一個強大的解決方案。InnoDB 就是作為默認的存儲引擎。InnoDB 還引入了行級鎖定和外鍵約束。
在以下場合下,使用 InnoDB 是最理想的選擇:
1. 更新密集的表。InnoDB 存儲引擎特別適合處理多重并發的更新請求。
2. 事務。InnoDB 存儲引擎是支持事務的標準 MySQL 存儲引擎。
3. 自動災難恢復。與其它存儲引擎不同,InnoDB 表能夠自動從災難中恢復。
4. 外鍵約束。MySQL 支持外鍵的存儲引擎只有 InnoDB。
5. 支持自動增加列 AUTO_INCREMENT 屬性。
一般來說,如果需要事務支持,并且有較高的并發讀取頻率,InnoDB 是不錯的選擇。
2)MyISAM
MyISAM 不支持事務,也不支持外鍵,尤其是訪問速度快,對事務完整性沒有要求或者以 SELECT、INSERT 為主的應用基本都可以使用這個引擎來創建表。每個 MyISAM 在磁盤上存儲成 3 個文件,其中文件名和表名都相同,但是擴展名分別為:
.frm(存儲表定義)
.MYD(MYData,存儲數據)
.MYI(MYIndex,存儲索引)
3)MEMORY
使用 Memory 存儲引擎的出發點是速度。為得到最快的響應時間,采用的邏輯存儲介質是系統內存。雖然在內存中存儲表數據確實會提供很高的性能,但當 mysqld 守護進程崩潰時,所有的 Memory 數據都會丟失。獲得速度的同時也帶來了一些缺陷。它要求存儲在 Memory 數據表里的數據使用的是長度不變的格式,這意味著不能使用 BLOB 和 TEXT 這樣的長度可變的數據類型,VARCHAR 是一種長度可變的類型,但因為它在 MySQL 內部當做長度固定不變的 CHAR 類型,所以可以使用。
一般在以下幾種情況下使用 Memory 存儲引擎:
1. 目標數據較小,而且被非常頻繁地訪問。在內存中存放數據,所以會造成內存的使用,可以通過參數 max_heap_table_size 控制 Memory 表的大小,設置此參數,就可以限制 Memory 表的最大大小。
2. 如果數據是臨時的,而且要求必須立即可用,那么就可以存放在內存表中。
3. 存儲在 Memory 表中的數據如果突然丟失,不會對應用服務產生實質的負面影響。
3. 如何選擇合適的存儲引擎?
可以按照下列判斷來選擇
(1)是否需要支持事務;
(2)是否需要使用熱備;
(3)崩潰恢復:能否接受崩潰;
(4)是否需要外鍵支持;
然后按照標準,選擇對應的存儲引擎即可。
感謝各位的閱讀,以上就是“MySQL 數據庫存儲引擎的分類有哪些”的內容了,經過本文的學習后,相信大家對 MySQL 數據庫存儲引擎的分類有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!