溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

MySQL常用引擎有哪些

發(fā)布時(shí)間:2022-06-07 09:24:17 來(lái)源:億速云 閱讀:126 作者:zzz 欄目:開(kāi)發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“MySQL常用引擎有哪些”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“MySQL常用引擎有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

    前言:

    MySQL 有很多存儲(chǔ)引擎(也叫數(shù)據(jù)引擎),所謂的存儲(chǔ)引擎是指用于存儲(chǔ)、處理和保護(hù)數(shù)據(jù)的核心服務(wù)。也就是存儲(chǔ)引擎是數(shù)據(jù)庫(kù)的底層軟件組織。在 MySQL 中可以使用“show engines”來(lái)查詢(xún)數(shù)據(jù)庫(kù)的所有存儲(chǔ)引擎,

    如下圖所示: 

    MySQL常用引擎有哪些

     在上述列表中,我們最常用的存儲(chǔ)引擎有以下 3 種:

    • InnoDB

    • MyISAM

    • MEMORY

    下面我們分別來(lái)看看具體分析。

    1.InnoDB

    InnoDB 是 MySQL 5.1 之后默認(rèn)的存儲(chǔ)引擎,它支持事務(wù)、支持外鍵、支持崩潰修復(fù)和自增列。如果對(duì)業(yè)務(wù)的完整性要求較高,比如張三給李四轉(zhuǎn)賬,需要減張三的錢(qián),同時(shí)給李四加錢(qián),這時(shí)候只能全部執(zhí)行成功或全部執(zhí)行失敗,此時(shí)可以通過(guò) InnoDB 來(lái)控制事務(wù)的提交和回滾,從而保證業(yè)務(wù)的完整性。

    1.1 優(yōu)缺點(diǎn)分析

    InnoDB 的優(yōu)勢(shì)是支持事務(wù)、支持外鍵、支持崩潰修復(fù)和自增列;它的缺點(diǎn)是讀寫(xiě)效率較差、占用的數(shù)據(jù)空間較大。

    2.MyISAM

    MyISAM 是 MySQL 5.1 之前默認(rèn)的數(shù)據(jù)庫(kù)引擎,讀取效率較高,占用數(shù)據(jù)空間較少,但不支持事務(wù)、不支持行級(jí)鎖、不支持外鍵等特性。因?yàn)椴恢С中屑?jí)鎖,因此在添加和修改操作時(shí),會(huì)執(zhí)行鎖表操作,所以它的寫(xiě)入效率較低。

    2.1 優(yōu)缺點(diǎn)分析

    MyISAM 引擎保存了單獨(dú)的索引文件 .myi,且它的索引是直接定位到 OFFSET 的,而 InnoDB 沒(méi)有單獨(dú)的物理索引存儲(chǔ)文件,且 InnoDB 索引尋址是先定位到塊數(shù)據(jù),再定位到行數(shù)據(jù),所以 MyISAM 的查詢(xún)效率是比 InnoDB 的查詢(xún)效率要高。但它不支持事務(wù)、不支持外鍵,所以它的適用場(chǎng)景是讀多寫(xiě)少,且對(duì)完整性要求不高的業(yè)務(wù)場(chǎng)景。

    3.MEMORY

    內(nèi)存型數(shù)據(jù)庫(kù)引擎,所有的數(shù)據(jù)都存儲(chǔ)在內(nèi)存中,因此它的讀寫(xiě)效率很高,但 MySQL 服務(wù)重啟之后數(shù)據(jù)會(huì)丟失。它同樣不支持事務(wù)、不支持外鍵。MEMORY 支持 Hash 索引或 B 樹(shù)索引,其中 Hash 索引是基于 key 查詢(xún)的,因此查詢(xún)效率特別高,但如果是基于范圍查詢(xún)的效率就比較低了。而前面兩種存儲(chǔ)引擎是基于 B+ 樹(shù)的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)了。

    3.1 優(yōu)缺點(diǎn)分析

    MEMORY 讀寫(xiě)性能很高,但 MySQL 服務(wù)重啟之后數(shù)據(jù)會(huì)丟失,它不支持事務(wù)和外鍵。適用場(chǎng)景是讀寫(xiě)效率要求高,但對(duì)數(shù)據(jù)丟失不敏感的業(yè)務(wù)場(chǎng)景。

    4.查看和設(shè)置存儲(chǔ)引擎

    4.1 查看存儲(chǔ)引擎

    存儲(chǔ)引擎的設(shè)置粒度是表級(jí)別的,也就是每張表可以設(shè)置不同的存儲(chǔ)引擎,我們可以使用以下命令來(lái)查詢(xún)某張表的存儲(chǔ)引擎:

    show create table t;

    如下圖所示: 

    MySQL常用引擎有哪些

    4.2 設(shè)置存儲(chǔ)引擎

    在創(chuàng)建一張表的時(shí)候設(shè)置存儲(chǔ)引擎: 

    MySQL常用引擎有哪些

     修改一張已經(jīng)存在表的存儲(chǔ)引擎: 

    MySQL常用引擎有哪些

    讀到這里,這篇“MySQL常用引擎有哪些”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI