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