一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

MySQL 存儲(chǔ)引擎

 路人甲Java 2022-09-27 發(fā)布于北京

 

存儲(chǔ)引擎

DBMS使用存儲(chǔ)引擎進(jìn)行數(shù)據(jù)的創(chuàng)建、查詢、更新、刪除操作。

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

MySQL提供了多種存儲(chǔ)引擎,最常見(jiàn)的有3種。

 

 


 

 

 

1、MyISAM 

MySQL5.5之前的默認(rèn)的存儲(chǔ)引擎,每個(gè)MyISAM在磁盤上存儲(chǔ)成三個(gè)文件,文件名和表名相同,擴(kuò)展名分別是

(1)frm文件:存儲(chǔ)表的定義

(2)MYD文件:存儲(chǔ)表中的數(shù)據(jù)(記錄)

(3)MYI文件:存儲(chǔ)索引。索引保存的是數(shù)據(jù)文件的指針

 

特點(diǎn)

  • 訪問(wèn)速度快(優(yōu))
  • 支持全文索引(優(yōu))。但基本不使用MySQL的全文索引,全文索引一般都是使用第三方的ElasticSearch,Solr等更加成熟的解決方案。
  • 不支持事務(wù)、外鍵(缺)
  • 默認(rèn)的鎖粒度為表級(jí)鎖,所以并發(fā)度很差(缺),但加鎖快,鎖沖突較少,不容易發(fā)生死鎖(優(yōu));
  • 對(duì)數(shù)據(jù)的查詢緩存只緩存索引,不緩存數(shù)據(jù)(記錄),而且使用的是操作系統(tǒng)本身的緩存。
  • 自動(dòng)增長(zhǎng)列可以是組合主鍵中的任何一列。設(shè)置自動(dòng)增長(zhǎng)列:創(chuàng)建表時(shí),在字段后加auto_increment,默認(rèn)初始值是1

 

 

適用場(chǎng)景

  • 不需要事務(wù)
  • 不使用外鍵
  • 操作以select、insert為主

 

 

MyISAM支持三種不同的存儲(chǔ)格式

(1)靜態(tài)表(fixed)

表中不能包含變長(zhǎng)字段(比如VARCHAR, BLOB, TEXT),每個(gè)記錄都是固定的長(zhǎng)度。如果MyISAM表中沒(méi)有一個(gè)變長(zhǎng)字段,則默認(rèn)使用靜態(tài)表。

優(yōu)點(diǎn):存儲(chǔ)迅速,出現(xiàn)故障容易恢復(fù)

缺點(diǎn):占用空間比動(dòng)態(tài)表大。靜態(tài)表在進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí)會(huì)按照事先定義的列寬補(bǔ)足空格,但在訪問(wèn)的時(shí)候會(huì)去掉補(bǔ)的空格

 

(2)動(dòng)態(tài)表(dynamic)

可包含變長(zhǎng)字段(varchar、blob、text),如果一個(gè)MyISAM表包含任何可變長(zhǎng)度的字段,或者該表創(chuàng)建時(shí)用row_format=dynamic指定,則該表使用動(dòng)態(tài)格式存儲(chǔ)

優(yōu)點(diǎn):占用空間小

缺點(diǎn):頻繁的更新、刪除操作會(huì)產(chǎn)生碎片,需要定期用optimize table語(yǔ)句或myisamchk -r命令來(lái)改善性能,出現(xiàn)故障后較難恢復(fù)

 

(3)壓縮表

由myisampack工具創(chuàng)建,每條記錄都會(huì)被單獨(dú)壓縮,占據(jù)硬盤空間極小。

 

 


 

 

 

2、InnoDB 

MySQL5.5及其之后默認(rèn)的存儲(chǔ)引擎

 

InnoDB有2種存儲(chǔ)方式

  • 共享表空間存儲(chǔ):所有表的定義、數(shù)據(jù)、索引存放在同一個(gè)表空間中。
  • 獨(dú)占表空間存儲(chǔ):一張表獨(dú)占一個(gè)表空間,表的定義保存在.frm文件中,數(shù)據(jù)、索引保存在.ibd文件中。

 

 

特點(diǎn)

  • 自動(dòng)增長(zhǎng)列必須是主鍵,如果是組合主鍵,也必須是組合主鍵的第一列
  • 支持外鍵約束。MySQL的存儲(chǔ)引擎中只有innoDB支持外鍵。外鍵降低了查詢速度(因?yàn)橐槎鄰埍恚?、使多張表耦合在一起,但更好地體現(xiàn)了實(shí)體、表之間的關(guān)聯(lián)。
  • 支持事務(wù),恢復(fù)能力強(qiáng)。默認(rèn)的事務(wù)隔離級(jí)別為可重復(fù)讀
  • 使用的鎖粒度為行級(jí)鎖,支持更高的并發(fā)。行級(jí)鎖、事務(wù),安全性有了,但是以犧牲效率換來(lái)的。
  • 會(huì)將查詢的結(jié)果(索引+數(shù)據(jù))放到緩沖池中,加快后續(xù)查詢的速度
  • 發(fā)生故障后恢復(fù)性好。未完成的事務(wù)將根據(jù)redo log的數(shù)據(jù)重做;已提交但未寫(xiě)入的修改,將從doublewrite buffer重做;系統(tǒng)閑時(shí)會(huì)purge buffer
  • 主鍵索引是聚集索引(Clustered index,僅InnoDB支持),根據(jù)主鍵查詢時(shí)效率高,但根據(jù)主鍵進(jìn)行刪改時(shí)效率低。聚集索引:物理存儲(chǔ)順序與索引順序相同
  • 支持在線熱備

 

 

適用場(chǎng)景

  • 對(duì)安全性有要求(事務(wù)+恢復(fù)性好),比如財(cái)務(wù)、計(jì)費(fèi)、銀行
  • 并發(fā)高(行級(jí)鎖)
  • 使用外鍵

 

可以在join查詢中混用InnoDB引擎的表、其他引擎的表

 

 


 

 

 

MyISAM、InnoDB的對(duì)比

(1)鎖粒度不同,InnoDB為行級(jí)鎖,MyISAM為表級(jí)鎖

  • InnoDB對(duì)并發(fā)的支持遠(yuǎn)比MyISAM高
  • 但I(xiàn)nnoDB鎖沖突的概率更大,更容易發(fā)生死鎖,而且為每一行加鎖,開(kāi)銷也很大

 

(2)InnoDB支持外鍵,MyISAM不支持

 

(3)InnoDB支持事務(wù),MyISAM不支持

  • InnoDB更安全,開(kāi)銷也更大

 

(4)InnoDB緩存查詢到的索引、數(shù)據(jù),MyISAM只緩存索引

 

(5)查詢效率MyISAM遠(yuǎn)高于InnoDB,尤其是在數(shù)據(jù)表行數(shù)多的時(shí)候

  • MyISAM的索引中存儲(chǔ)的是數(shù)據(jù)(記錄)的指針(地址),先查索引確定要操作的記錄的地址,直接就去訪問(wèn)這個(gè)地址
  • InnoDB的索引存儲(chǔ)的是記錄的行號(hào),從索引中查到行號(hào)(行坐標(biāo)),還需要逐行統(tǒng)計(jì)行號(hào)(從第一行開(kāi)始數(shù))
  • 而且InnoDB在查詢過(guò)程中,要維護(hù)緩沖池中的查詢緩存(索引+數(shù)據(jù)),MyISAM只需維護(hù)緩存中的索引

 

(6)InnoDB支持在線熱備,有很成熟的在線熱備解決方案


(7)MyISAM的表文件包括:.frm(表定義),.MYI(索引),.MYD(數(shù)據(jù)),InnoDB的表文件為.frm(表定義),.ibd(索引、數(shù)據(jù))

 

一句話,MyISAM效率更高、速度更快,InnoDB功能更全、安全性更好、開(kāi)銷更大。

 

 


 

 

 

3、MEMORY

數(shù)據(jù)(記錄)不是儲(chǔ)存在文件中,而是存儲(chǔ)在內(nèi)存中。每個(gè)memory表對(duì)應(yīng)一個(gè).frm文件(表定義、索引)。

 

特點(diǎn)

  • 訪問(wèn)速度極快。數(shù)據(jù)存放在內(nèi)存中+使用HASH索引
  • 宕機(jī)、關(guān)閉服務(wù)器,數(shù)據(jù)會(huì)丟失
  • 表的大小有限制(內(nèi)初有限)
  • 對(duì)表的數(shù)據(jù)類型有限制。比如:只支持定長(zhǎng)類型,VARCHAR會(huì)被自動(dòng)存儲(chǔ)為CHAR類型,不支持TEXT、BLOB
  • 鎖粒度為表級(jí)鎖。并發(fā)量大的時(shí)候,表級(jí)鎖會(huì)成為MEMORY存儲(chǔ)引擎的瓶頸

 

 

適用場(chǎng)景

  • 存儲(chǔ)臨時(shí)、不重要的數(shù)據(jù)
  • 大量讀 ,作為緩存

 

 


 

 

如何選擇合適的存儲(chǔ)引擎

  • 安全性要求(事務(wù))
  • 并發(fā)高不高
  • 使不使用外鍵
  • 是否需要支持在線熱備

 

一個(gè)數(shù)據(jù)庫(kù)中,不同的表可以使用不同的存儲(chǔ)引擎。

使用合適的存儲(chǔ)引擎,會(huì)提高數(shù)據(jù)庫(kù)的性能。

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产欧美日本在线播放| 亚洲国产婷婷六月丁香| 一区二区日本一区二区欧美| 亚洲婷婷开心色四房播播| 日韩一级免费中文字幕视频| 欧美精品日韩精品一区| 国产精品美女午夜福利| 亚洲成人久久精品国产| 91超频在线视频中文字幕| 一区二区三区18禁看| 国产免费人成视频尤物| 翘臀少妇成人一区二区| 99久久人妻精品免费一区| 亚洲天堂久久精品成人| 国产成人高清精品尤物| 国内自拍偷拍福利视频| 正在播放国产又粗又长| 国产精品推荐在线一区| 久久99精品国产麻豆婷婷洗澡| 欧美日韩无卡一区二区| 国产精品刮毛视频不卡| 国产日韩欧美综合视频| 色偷偷偷拍视频在线观看| 欧美人与动牲交a精品| 国产高清精品福利私拍| 精品亚洲香蕉久久综合网| 免费在线成人激情视频| 日本少妇中文字幕不卡视频| 日本国产欧美精品视频| 国产精品久久男人的天堂| 国产伦精品一区二区三区精品视频| 亚洲熟女少妇精品一区二区三区| 老司机精品视频在线免费看| 日韩人妻免费视频一专区| 五月婷婷综合缴情六月| 国产免费一区二区不卡| 五月婷婷综合缴情六月| 国产又粗又硬又大又爽的视频| 亚洲一区二区三区在线免费| 国产人妻精品区一区二区三区| 中文字幕在线区中文色|