国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL—MySQL的存儲(chǔ)引擎之InnoDB

這篇具有很好參考價(jià)值的文章主要介紹了MySQL—MySQL的存儲(chǔ)引擎之InnoDB。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

MySQL—MySQL的存儲(chǔ)引擎之InnoDB

存儲(chǔ)引擎及種類

存儲(chǔ)引擎 說(shuō)明
MyISAM 高速引擎,擁有較高的插入,查詢速度,但不支持事務(wù)
InnoDB 5.5版本后MySQL的默認(rèn)數(shù)據(jù)庫(kù)存儲(chǔ)引擎,支持事務(wù)和行級(jí)鎖,比MyISAM處理速度稍慢
ISAM MyISAM的前身,MySQL5.0以后不再默認(rèn)安裝
MRG_MyISAM 將多個(gè)表聯(lián)合成一個(gè)表使用,在超大規(guī)模數(shù)據(jù)存儲(chǔ)時(shí)很有用
Memory 內(nèi)存存儲(chǔ)引擎,擁有極高的插入,更新和查詢效率。但是會(huì)占用和數(shù)據(jù)量成正比的內(nèi)存空間。只在內(nèi)存上保存數(shù)據(jù),意味著數(shù)據(jù)可能會(huì)丟失
Archive 將數(shù)據(jù)壓縮后進(jìn)行存儲(chǔ),非常適合存儲(chǔ)大量的獨(dú)立的,作為歷史記錄的數(shù)據(jù),但是只能進(jìn)行插入和查詢操作
CSV CSV 存儲(chǔ)引擎是基于 CSV 格式文件存儲(chǔ)數(shù)據(jù)(應(yīng)用于跨平臺(tái)的數(shù)據(jù)交換)

怎么選擇存儲(chǔ)引擎?

除非需要用到某些InnoDB不具備的特性,并且沒有其他辦法可以替代,否則都應(yīng)該選擇InnoDB引擎。(大部分情況下都選擇InnoDB。)

InnonDB和MyISAM的比較

比較項(xiàng) InnonDB MyISAM
存儲(chǔ)文件 .frm是表定義文件
.ibd是數(shù)據(jù)文件和索引文件
.frm是表定義文件
.myd數(shù)據(jù)文件
.myi是索引文件
支持表鎖、行鎖 支持表鎖
是否支持外鍵 支持外鍵 不支持外鍵
是否支持事務(wù) 支持 不支持
CRUD 讀、寫 讀多
索引結(jié)構(gòu) B+Tree B+Tree
show engines;

MySQL—MySQL的存儲(chǔ)引擎之InnoDB,MySQL,mysql,數(shù)據(jù)庫(kù)

InnonDB架構(gòu)

InnonDB架構(gòu)圖如下:

MySQL—MySQL的存儲(chǔ)引擎之InnoDB,MySQL,mysql,數(shù)據(jù)庫(kù)

從圖中可見,InnoDB存儲(chǔ)引擎由內(nèi)存結(jié)構(gòu)、磁盤結(jié)構(gòu)兩部分組成。

內(nèi)存結(jié)構(gòu)

lnnoDB內(nèi)存結(jié)構(gòu)主要分為如下四個(gè)區(qū)域:

  1. Buffer Pool緩沖池
  2. Change Buffer修改緩沖
  3. Adaptive Hash lndex自適應(yīng)索引
  4. Log Buffer日志緩沖
緩沖池(Buffer Pool)

緩沖池Buaffer Pool用于加速數(shù)據(jù)的訪問(wèn)和修改,通過(guò)將熱點(diǎn)數(shù)據(jù)緩存在內(nèi)存的方法最大限度地減少磁盤IO,加速熱點(diǎn)數(shù)據(jù)讀寫。

  • 默認(rèn)大小為128M,Buffer Pool中數(shù)據(jù)以頁(yè)為存儲(chǔ)單位,其實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)是以頁(yè)為單位的單鏈表。
  • 由于內(nèi)存的空間限制,Buffer Pool僅能容納最熱點(diǎn)的數(shù)據(jù)。
  • Buffer Pool使用LRU算法 (Least Recently Used最近最少使用)淘汰非熱點(diǎn)數(shù)據(jù)頁(yè)。
  • LRU:根據(jù)頁(yè)數(shù)據(jù)的歷史訪問(wèn)來(lái)淘汰數(shù)據(jù),如果數(shù)據(jù)最近被訪問(wèn)過(guò),那么將來(lái)被訪問(wèn)的幾率也更高,優(yōu)先淘汰最近沒有被訪問(wèn)到的數(shù)據(jù)。
  • 對(duì)于Buffer Pool中數(shù)據(jù)的查詢,InnoDB直接讀取返回。對(duì)于Buffer Pool中數(shù)據(jù)的修改,lnnoDB直接在Buffer Pool中修改,并將修改寫入redo log。
修改緩沖(Change Buffer)

用于加速非熱點(diǎn)數(shù)據(jù)中二級(jí)索引的寫入操作。

修改緩沖對(duì)二級(jí)索引的修改操作會(huì)錄入redo log中。

在緩沖到一定量或系統(tǒng)較空閑時(shí)進(jìn)行merge操作(寫入磁盤) ;

其物理結(jié)構(gòu)為一棵名為ibuf的B+樹。

自適應(yīng)哈希索引(Adaptive Hash Index)

用于實(shí)現(xiàn)對(duì)于熱數(shù)據(jù)頁(yè)的一次查詢,是建立在索引之上的索引。

作用:對(duì)頻繁查詢的數(shù)據(jù)頁(yè)和索引頁(yè)進(jìn)一步提速

AHI大小為Buffer Pool的1/64

對(duì)于二級(jí)索引,若命中 AHI,則將直接從 AHI 獲取二級(jí)索引頁(yè)的記錄指針,再根據(jù)主鍵沿著聚簇索引查找數(shù)據(jù);若聚簇索引查詢同樣命中 AHI,則直接返回目標(biāo)數(shù)據(jù)頁(yè)的記錄指針,此時(shí)就可以根據(jù)記錄指針直接定位數(shù)據(jù)頁(yè)。

MySQL—MySQL的存儲(chǔ)引擎之InnoDB,MySQL,mysql,數(shù)據(jù)庫(kù)

日志緩沖(Log Buffer)

InnoDB使用Log Buffer 來(lái)緩沖日志文件的寫入操作。內(nèi)存寫入加上日志文件順序?qū)懙奶攸c(diǎn),使得InnoDB日志寫入性能極高。

這種將分散操作改為批量操作的優(yōu)化方式將增加數(shù)據(jù)丟失的風(fēng)險(xiǎn)。

磁盤文件之表空間

在磁盤中,InnoDB將所有數(shù)據(jù)都邏輯地存放在一個(gè)空間中,稱為表空間(Tablespace)。表空間由段(Segment) 、區(qū)(extent) 、頁(yè)(Page)組成。

  • 開啟獨(dú)立表空間innodb_file_per_table=1,每張表的數(shù)據(jù)都會(huì)存儲(chǔ)到一個(gè)獨(dú)立表空間,即表名.ibd文件
  • 關(guān)閉獨(dú)占表空間innodb_file_per_table=0,則所有基于InnoDB存儲(chǔ)引擎的表數(shù)據(jù)都會(huì)記錄到系統(tǒng)表空間,即ibdata1文件

表空間是 InnoDB 物理存儲(chǔ)中的最高層,目前的表空間類別包括:

  • 系統(tǒng)表空間(System Tablespace)
  • 獨(dú)立表空間(File-per-table Tablespace)
  • 通用表空間(General Tablespace)
  • 回滾表空間(Undo Tablespace)
  • 臨時(shí)表空間(The Temporary Tablespace)

MySQL—MySQL的存儲(chǔ)引擎之InnoDB,MySQL,mysql,數(shù)據(jù)庫(kù)

磁盤文件之存儲(chǔ)結(jié)構(gòu)

MySQL—MySQL的存儲(chǔ)引擎之InnoDB,MySQL,mysql,數(shù)據(jù)庫(kù)

內(nèi)存數(shù)據(jù)落盤

MySQL—MySQL的存儲(chǔ)引擎之InnoDB,MySQL,mysql,數(shù)據(jù)庫(kù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-859266.html

到了這里,關(guān)于MySQL—MySQL的存儲(chǔ)引擎之InnoDB的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • mysql--InnoDB存儲(chǔ)引擎--架構(gòu)和事務(wù)

    mysql--InnoDB存儲(chǔ)引擎--架構(gòu)和事務(wù)

    MySQL進(jìn)階篇 InnoDB 邏輯存儲(chǔ)單元主層級(jí)關(guān)系圖: 1、表空間 表空間是InnoDB存儲(chǔ)引擎邏輯結(jié)構(gòu)的最高層, 如果用戶啟用了參數(shù) innodb_file_per_table(在 8.0版本中默認(rèn)開啟) ,則每張表都會(huì)有一個(gè)表空間(xxx.ibd),一個(gè)mysql實(shí)例可以對(duì)應(yīng)多個(gè)表空間,用于存儲(chǔ)記錄、索引等數(shù)據(jù)。 2、段

    2024年02月14日
    瀏覽(21)
  • 【MYSQL】存儲(chǔ)引擎MyISAM和InnoDB

    【MYSQL】存儲(chǔ)引擎MyISAM和InnoDB

    查看MySQL提供所有的存儲(chǔ)引擎 mysql show engines; mysql常用引擎包括:MYISAM、Innodb、Memory、MERGE 1、MYISAM:全表鎖,擁有較高的執(zhí)行速度,不支持事務(wù),不支持外鍵,并發(fā)性能差,占用空間相對(duì)較小,對(duì)事務(wù)完整性沒有要求,以select、insert為主的應(yīng)用基本上可以使用這引擎 2、Innod

    2024年01月18日
    瀏覽(22)
  • MySQL高級(jí)10-InnoDB引擎存儲(chǔ)架構(gòu)

    MySQL高級(jí)10-InnoDB引擎存儲(chǔ)架構(gòu)

    表空間(Tablespace):一個(gè)mysql實(shí)例,及一個(gè)數(shù)據(jù)庫(kù)實(shí)例,可以對(duì)應(yīng)多個(gè)表空間(ibd文件),用于存儲(chǔ)記錄,索引等數(shù)據(jù)。 段(Segment):分為數(shù)據(jù)段(Leaf node segment)、索引段(Non-leaf node segment)、回滾段(Rollback segment),InnoDB是索引組織表,數(shù)據(jù)段就是B+樹的葉子節(jié)點(diǎn)(Leaf node segment),

    2024年02月08日
    瀏覽(23)
  • 【MySQL】 深入了解InnoDB存儲(chǔ)引擎的限制

    目錄 列數(shù)限制 索引數(shù)限制 InnoDB的行格式和索引限制 示例和注意事項(xiàng) **頁(yè)大小對(duì)索引鍵前綴長(zhǎng)度的影響 **對(duì)全列索引鍵的限制 多列索引限制 行大小限制 InnoDB?log限制 表空間大小限制 表數(shù)量限制 操作系統(tǒng)限制 文件大小和日志文件大小 文件層級(jí)限制 隨著數(shù)據(jù)庫(kù)技術(shù)的不斷發(fā)

    2024年01月24日
    瀏覽(24)
  • MySQL存儲(chǔ)引擎InnoDB和MyISAM的區(qū)別?

    InnoDB和MyISAM是MySQL數(shù)據(jù)庫(kù)兩種常見的存儲(chǔ)引擎,它們?cè)谛阅?、事?wù)支持等方面有一些重要的區(qū)別。以下是它們的一些主要區(qū)別: 事務(wù)支持: InnoDB: 支持事務(wù),具有ACID(原子性、一致性、隔離性、持久性)特性,適用于需要事務(wù)支持的應(yīng)用,如銀行、電商等。 MyISAM: 不支持

    2024年02月03日
    瀏覽(29)
  • MySQL之深入InnoDB存儲(chǔ)引擎——Checkpoint機(jī)制

    MySQL之深入InnoDB存儲(chǔ)引擎——Checkpoint機(jī)制

    由于頁(yè)的操作首先都是在緩沖池中完成的,那么如果一條DML語(yǔ)句改變了頁(yè)中的記錄,那么此時(shí)頁(yè)就是臟的,即緩沖池中頁(yè)的版本要比磁盤的新。那么數(shù)據(jù)庫(kù)需要將新版本的頁(yè)刷新到磁盤。倘若每次一個(gè)頁(yè)發(fā)生變化就刷新,那么開銷會(huì)很大,若熱點(diǎn)數(shù)據(jù)集中在某幾個(gè)頁(yè)中,那么

    2024年02月15日
    瀏覽(20)
  • MySQL 存儲(chǔ)引擎 InnoDB 內(nèi)存結(jié)構(gòu)之緩沖池

    MySQL 存儲(chǔ)引擎 InnoDB 內(nèi)存結(jié)構(gòu)之緩沖池

    緩沖池是主存儲(chǔ)器中的一個(gè)區(qū)域,在訪問(wèn) table 和索引數(shù)據(jù)時(shí) InnoDB 會(huì)對(duì)其進(jìn)行緩存。緩沖池允許直接從內(nèi)存中訪問(wèn)頻繁使用的數(shù)據(jù),從而加快處理速度。在專用服務(wù)器上,通常將高達(dá) 80% 的物理內(nèi)存分配給緩沖池。 為了高效處理大量讀取操作,緩沖池被劃分為可以容納多行

    2024年02月10日
    瀏覽(24)
  • MySQL 數(shù)據(jù)庫(kù)存儲(chǔ)引擎

    MySQL 數(shù)據(jù)庫(kù)存儲(chǔ)引擎

    目錄 一、存儲(chǔ)引擎簡(jiǎn)介 二、MyISAM存儲(chǔ)引擎 1、MylSAM介紹 2、MyISAM表支持3種不同的存儲(chǔ)格式 3、MylSAM的特點(diǎn) 4、MyISAM使用的生產(chǎn)場(chǎng)景 三、InnoDB存儲(chǔ)引擎 1、InnoDB介紹 2、InnoDB的特點(diǎn) 3、InnoDB適用生產(chǎn)場(chǎng)景 4、MyISAM和InnoDB的區(qū)別 四、查看和修改存儲(chǔ)引擎 1、查看系統(tǒng)支持的存儲(chǔ)引擎

    2023年04月25日
    瀏覽(94)
  • MySQL高級(jí)篇(存儲(chǔ)引擎InnoDB、MyISAM、Memory)

    MySQL高級(jí)篇(存儲(chǔ)引擎InnoDB、MyISAM、Memory)

    目錄 1、存儲(chǔ)引擎簡(jiǎn)介 1.1、查詢建表語(yǔ)句,默認(rèn)存儲(chǔ)引擎:InnoDB 1.2、查看當(dāng)前數(shù)據(jù)庫(kù)支持的存儲(chǔ)引擎 1.3、創(chuàng)建表,并指定存儲(chǔ)引擎 2、?存儲(chǔ)引擎-InnoDB介紹 2.1、存儲(chǔ)引擎特點(diǎn) ?3、MyISAM存儲(chǔ)引擎 ?4、Memory存儲(chǔ)引擎 ?5、InnoDB、MyISAM、Memory的區(qū)別 ?6、存儲(chǔ)引擎的選擇 介紹:In

    2024年04月11日
    瀏覽(22)
  • MySQL數(shù)據(jù)庫(kù)之存儲(chǔ)引擎

    MySQL數(shù)據(jù)庫(kù)之存儲(chǔ)引擎

    MySQL中的數(shù)據(jù)用各種不下同的技術(shù)存儲(chǔ)在文件中,每一種技術(shù)都使用不同的存儲(chǔ)機(jī)制、索引技巧、鎖定水平并最終提供不同的功能和能力,這些不同的技術(shù)以及配套的功能在MySQL中稱為存儲(chǔ)引擎。 存儲(chǔ)引擎是MySQL將數(shù)據(jù)存儲(chǔ)在文件系統(tǒng)中的存儲(chǔ)方式或者存儲(chǔ)格式。 存儲(chǔ)引擎是

    2024年02月03日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包