明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

MySQL中存儲引擎InnoDB與MyISAM的詳細說明

[摘要]1.InnoDB存儲引擎 MySQL5.5中InnoDB成為默認的存儲引擎。InnoDB是事務(wù)型存儲引擎,被設(shè)計用來處理大量的短期事務(wù)。它的性能和自動崩潰恢復(fù)特性,使得它在非事務(wù)場景中也很流行。...
1.InnoDB存儲引擎

MySQL5.5中InnoDB成為默認的存儲引擎。InnoDB是事務(wù)型存儲引擎,被設(shè)計用來處理大量的短期事務(wù)。它的性能和自動崩潰恢復(fù)特性,使得它在非事務(wù)場景中也很流行。

所以可以這么說:“除非需要用到某些InnoDB不具備的特性,并且沒有其他辦法可以替代,否則都應(yīng)該優(yōu)先選擇它”。

InnoDB的數(shù)據(jù)存儲在表空間中,它可以將每個表的數(shù)據(jù)和索引存放在單獨文件中。

InnoDB采用MVCC來支持高并發(fā),并且實現(xiàn)了四個標準的隔離級別。默認級別是REPEATABLE READ(可重復(fù)讀),并且通過間隙鎖策略防止幻讀的出現(xiàn)。

InnoDB表示基于聚簇索引建立的,聚簇索引對主鍵的查詢有很高的性能。

InnoDB支持真正的熱備份,可以通過XtraBackup工具實現(xiàn)。

InnoDB內(nèi)部做了很多優(yōu)化,包括從磁盤讀取數(shù)據(jù)時采用的可預(yù)測性預(yù)讀,能夠自動在內(nèi)存中創(chuàng)建hash索引,能夠加速插入操作的插入緩沖區(qū)等。

應(yīng)用場景

需要在線熱備份

     數(shù)據(jù)量大,需要系統(tǒng)崩潰后快速恢復(fù)。比如訂單處理。

2.MyISAM存儲引擎

MySQL5.1之前,MyISAM為默認的存儲引擎。MyISAM不支持事務(wù)和行級鎖且最大缺陷就是崩潰后無法安全恢復(fù)。

.MyISAM將表存儲在兩個文件中:數(shù)據(jù)文件和索引文件。

MyISAM對整張表加鎖,讀取時對需要的所有表加共享鎖,寫入時加排它鎖。但是在表有讀取查詢時,也可以往表中插入新的記錄(并發(fā)插入)

MyISAM可以手工或者自動執(zhí)行檢查修復(fù)操作,但是可能導致數(shù)據(jù)丟失而且修復(fù)操作非常慢。

MyISAM表中BLOB和TEXT等長字段也可以基于前500個字符創(chuàng)建索引。MyISAM也支持全文索引,這是基于分詞創(chuàng)建的索引,可以支持復(fù)雜的查詢。

MyISAM在創(chuàng)建表時候如果指定DELAY_KEY_WRITE(延遲更新索引鍵),在每次修改執(zhí)行完成時會將索引寫入內(nèi)存中的鍵緩沖區(qū),擋在清理鍵緩沖區(qū)或者關(guān)閉表時才會將對應(yīng)索 引塊寫入磁盤,這種方式可以極大提升寫入性能。但是在數(shù)據(jù)庫或主機崩潰時索引會損壞。

應(yīng)用場景

主要是SELECT和INSERT操作的場景,比如一般日志型的應(yīng)用。

以上就是MySQL中存儲引擎InnoDB與MyISAM的詳解的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學習教程快速掌握從入門到精通的SQL知識。