杭州個(gè)人網(wǎng)站建設(shè)/搜索引擎優(yōu)化的方法
文章目錄
- 前言
- MySQL 的存儲(chǔ)引擎介紹
- 存儲(chǔ)引擎是什么?
- 存儲(chǔ)引擎的特性?
- Innodb 與 Mylsam 的區(qū)別
- 行級(jí)鎖與表級(jí)鎖
- 是否支持事務(wù)
- 是否支持恢復(fù)數(shù)據(jù)
- 是否支持外鍵
- 是否支持 MVCC
- 總結(jié)
前言
好文章不要錯(cuò)過(guò),前兩天跟大家分享的文章
1.MySQL的基礎(chǔ)架構(gòu)
2.SQL語(yǔ)句的執(zhí)行流程
今天跟大家講一講 MySQL 的存儲(chǔ)引擎。
MySQL 的存儲(chǔ)引擎介紹
存儲(chǔ)引擎是什么?
答:存儲(chǔ)引擎是MySQL 用于存儲(chǔ)數(shù)據(jù)的,數(shù)據(jù)的讀寫(xiě),更新都將在存儲(chǔ)引擎執(zhí)行。
存儲(chǔ)引擎的特性?
答:存儲(chǔ)引擎是插件式存儲(chǔ)引擎,常見(jiàn)的存儲(chǔ)引擎有 Innodb,MyLSAM,Memory等,MySQL之前默認(rèn)的存儲(chǔ)引擎是 MyLsam,但是在MySQL 5.5.5以后默認(rèn)的存儲(chǔ)引擎是 Innodb。一開(kāi)始Innodb是第三方的存儲(chǔ)引擎,但是實(shí)在太優(yōu)秀了,就被oracle收購(gòu)… 這難道就是鈔能力???
那么,Innodb 到底優(yōu)秀在哪里呢?下面我們來(lái)說(shuō)一說(shuō)。
Innodb 與 Mylsam 的區(qū)別
行級(jí)鎖與表級(jí)鎖
Innodb 是基于行級(jí)鎖的存儲(chǔ)引擎,MyLsam 是基于表級(jí)鎖的存儲(chǔ)引擎。試想一下在更新數(shù)據(jù)庫(kù)是鎖住整個(gè)表執(zhí)行,與基于行級(jí)鎖,鎖住一條數(shù)據(jù)執(zhí)行。這性能差別是十分之大的。
是否支持事務(wù)
Innodb 是支持事務(wù)的,這也是它區(qū)別與其他存儲(chǔ)引擎一個(gè)重要的原因,四種事務(wù)的隔離級(jí)別,它默認(rèn)是可重復(fù)讀,解決不可重復(fù)讀與臟讀的事務(wù)級(jí)別。
Mylsam 是不支持事務(wù)的。
是否支持恢復(fù)數(shù)據(jù)
如果 MySQL 崩潰,Innodb 基于它自帶的日志模塊 redo log,是可以支持恢復(fù)以往的數(shù)據(jù)的,恢復(fù)速度快。
Mylsam 是恢復(fù)數(shù)據(jù)的話相比于 Innodb 恢復(fù)極慢。
是否支持外鍵
Innodb 是支持外鍵的,雖然根據(jù)阿里的Java開(kāi)發(fā)手冊(cè),是不允許使用外鍵的。
Mylsam 是不支持外鍵的。
是否使用外鍵,還是要根據(jù)具體的項(xiàng)目的業(yè)務(wù)開(kāi)發(fā)。使用外鍵不會(huì)導(dǎo)致業(yè)務(wù)數(shù)據(jù)的混亂,但是會(huì)有一定的約束。
是否支持 MVCC
Innodb 支持 MVCC,MVCC 是多版本控制工具,是行級(jí)鎖的深入的實(shí)現(xiàn)。
Mylsam 不支持。
總結(jié)
總的來(lái)說(shuō),存儲(chǔ)引擎是MySQL 用于存儲(chǔ)讀寫(xiě)數(shù)據(jù)的。常用的存儲(chǔ)引擎有 Innodb, MyLSAM,Memory等。其中 Innodb 的性能最快。也是 MySQL 5.5.5 之后默認(rèn)的存儲(chǔ)引擎。
有啟發(fā)點(diǎn)個(gè)贊 🌹
預(yù)計(jì)下篇分享:MySQL 索引入門
本篇參考:JavaGuide
我是小輝,正在進(jìn)行 Java 實(shí)習(xí)的 24 屆應(yīng)屆畢業(yè)生。歡迎關(guān)注,持續(xù)分享,包括但不限于技術(shù)文章。全網(wǎng)同名…