MySQL中存儲(chǔ)引擎InnoDB與MyISAM的詳細(xì)說明
發(fā)表時(shí)間:2023-07-19 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]1.InnoDB存儲(chǔ)引擎 MySQL5.5中InnoDB成為默認(rèn)的存儲(chǔ)引擎。InnoDB是事務(wù)型存儲(chǔ)引擎,被設(shè)計(jì)用來處理大量的短期事務(wù)。它的性能和自動(dòng)崩潰恢復(fù)特性,使得它在非事務(wù)場(chǎng)景中也很流行。...
1.InnoDB存儲(chǔ)引擎 MySQL5.5中InnoDB成為默認(rèn)的存儲(chǔ)引擎。InnoDB是事務(wù)型存儲(chǔ)引擎,被設(shè)計(jì)用來處理大量的短期事務(wù)。它的性能和自動(dòng)崩潰恢復(fù)特性,使得它在非事務(wù)場(chǎng)景中也很流行。
所以可以這么說:“除非需要用到某些InnoDB不具備的特性,并且沒有其他辦法可以替代,否則都應(yīng)該優(yōu)先選擇它”。
InnoDB的數(shù)據(jù)存儲(chǔ)在表空間中,它可以將每個(gè)表的數(shù)據(jù)和索引存放在單獨(dú)文件中。
InnoDB采用MVCC來支持高并發(fā),并且實(shí)現(xiàn)了四個(gè)標(biāo)準(zhǔn)的隔離級(jí)別。默認(rèn)級(jí)別是REPEATABLE READ(可重復(fù)讀),并且通過間隙鎖策略防止幻讀的出現(xiàn)。
InnoDB表示基于聚簇索引建立的,聚簇索引對(duì)主鍵的查詢有很高的性能。
InnoDB支持真正的熱備份,可以通過XtraBackup工具實(shí)現(xiàn)。
InnoDB內(nèi)部做了很多優(yōu)化,包括從磁盤讀取數(shù)據(jù)時(shí)采用的可預(yù)測(cè)性預(yù)讀,能夠自動(dòng)在內(nèi)存中創(chuàng)建hash索引,能夠加速插入操作的插入緩沖區(qū)等。
應(yīng)用場(chǎng)景:
需要在線熱備份
數(shù)據(jù)量大,需要系統(tǒng)崩潰后快速恢復(fù)。比如訂單處理。
2.MyISAM存儲(chǔ)引擎
MySQL5.1之前,MyISAM為默認(rèn)的存儲(chǔ)引擎。MyISAM不支持事務(wù)和行級(jí)鎖且最大缺陷就是崩潰后無法安全恢復(fù)。
.MyISAM將表存儲(chǔ)在兩個(gè)文件中:數(shù)據(jù)文件和索引文件。
MyISAM對(duì)整張表加鎖,讀取時(shí)對(duì)需要的所有表加共享鎖,寫入時(shí)加排它鎖。但是在表有讀取查詢時(shí),也可以往表中插入新的記錄(并發(fā)插入)
MyISAM可以手工或者自動(dòng)執(zhí)行檢查修復(fù)操作,但是可能導(dǎo)致數(shù)據(jù)丟失而且修復(fù)操作非常慢。
MyISAM表中BLOB和TEXT等長(zhǎng)字段也可以基于前500個(gè)字符創(chuàng)建索引。MyISAM也支持全文索引,這是基于分詞創(chuàng)建的索引,可以支持復(fù)雜的查詢。
MyISAM在創(chuàng)建表時(shí)候如果指定DELAY_KEY_WRITE(延遲更新索引鍵),在每次修改執(zhí)行完成時(shí)會(huì)將索引寫入內(nèi)存中的鍵緩沖區(qū),擋在清理鍵緩沖區(qū)或者關(guān)閉表時(shí)才會(huì)將對(duì)應(yīng)索 引塊寫入磁盤,這種方式可以極大提升寫入性能。但是在數(shù)據(jù)庫(kù)或主機(jī)崩潰時(shí)索引會(huì)損壞。
應(yīng)用場(chǎng)景:
主要是SELECT和INSERT操作的場(chǎng)景,比如一般日志型的應(yīng)用。
以上就是MySQL中存儲(chǔ)引擎InnoDB與MyISAM的詳解的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。