最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL?數(shù)據(jù)持久化過程講解

 更新時間:2022年07月31日 10:10:24   作者:樹獺叔叔  
這篇文章主要介紹了MySQL?數(shù)據(jù)持久化過程講解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,?需要的朋友可以參考一下,希望對你的學(xué)習(xí)有所幫助

1. 過程簡述

理解MySQL數(shù)據(jù)的持久化過程,能很好的幫助我們加深對于MySQL底層的理解,在本文,我們以一種通俗的方式梳理一下這個過程,幫助大家建立起初步的認(rèn)識,如果大家感興趣,可以去深入學(xué)習(xí)與研究這個過程。

MySQL數(shù)據(jù)的存儲總體上可以分為兩部分,內(nèi)存中的存儲過程以及硬盤的持久化存儲,這里,就涉及到了內(nèi)存中buffer pollredo log以及磁盤上的事務(wù)日志表結(jié)構(gòu),在本文中,我們不具體解釋每一部分的具體設(shè)計,只是給大家一個概念型的認(rèn)識:

  • buffer poll 是InnoDB引擎緩存池的一部分,我們這里可以簡單理解為數(shù)據(jù)庫從磁盤讀進(jìn)內(nèi)存的內(nèi)存塊的緩存;
  • redo log是內(nèi)存中的邏輯日志,記錄了事務(wù)的變更操作
  • 事務(wù)日志是磁盤上的食物邏輯日志
  • 表結(jié)構(gòu)是真正存儲數(shù)據(jù)的結(jié)構(gòu)

2. 內(nèi)存中的操作

buffer poll中有對于讀入內(nèi)存的數(shù)據(jù)的緩存,在查詢命令執(zhí)行時,會優(yōu)先在緩存中查看是否命中,未命中就會從磁盤中將需要的數(shù)據(jù)讀進(jìn)來,緩存的管理使用的是改良的LRU算法,這里不做深入地介紹了。

當(dāng)一條修改指令運行的時候,首先進(jìn)行的是對于buffer poll中緩存的修改,被修改后的數(shù)據(jù)會被標(biāo)記為臟頁,同時,修改的操作也會記錄在redo log中,我們常說的MVCC中的版本鏈就是借助redo log實現(xiàn)的。

需要注意的是,臟頁不是立刻落到磁盤的,而是有可以設(shè)置的刷盤控制機(jī)制,例如,一個事務(wù)執(zhí)行結(jié)算后立刻落盤,按照一定時間定期落盤等等。

在內(nèi)存中的操作都是非持久化的,如果這時發(fā)生了意料之外的問題導(dǎo)致系統(tǒng)宕機(jī),數(shù)據(jù)是還沒有持久化的,所以理論上也不會對數(shù)據(jù)庫造成破壞性的影響。

3. 磁盤的持久化

3.1 事務(wù)日志的作用

InnoDB在磁盤的持久化分為兩步,第一步是邏輯日志的存儲,之后再將日志中的數(shù)據(jù)刷進(jìn)磁盤空間。

在討論為什么要使用邏輯日志之前,我們需要簡單理解隨機(jī)IO順序IO區(qū)別:

在讀取磁盤數(shù)據(jù)的時候,有一個尋址的過程,即將探針移動到需要的位置,這個過程是磁盤IO的重要瓶頸之一。

順序IO是指尋址的空間是連續(xù)的,移動距離很短,隨機(jī)IO是指我們需要尋找的地址分布在各處,需要移動很長的距離。

所以,我們能很明晰的得出結(jié)論:將隨機(jī)IO替換為順序IO能有效的提高磁盤IO的效率,邏輯日志的作用正是如此,由于日志文件在磁盤上是連續(xù)的,相比于分布在各處的數(shù)據(jù)表信息,IO效率能高出很多。

只要我們在事務(wù)日志中完整更新了操作,那么這個事務(wù)就已經(jīng)持久化成功了,后續(xù)會有專門負(fù)責(zé)的線程將日志信息存儲到表結(jié)構(gòu)中。

3.2 表結(jié)構(gòu)的兩步存儲

日志信息存儲到表結(jié)構(gòu)的過程是分為兩步進(jìn)行的,首先,會在表頭的緩存區(qū)域內(nèi)進(jìn)行數(shù)據(jù)更新,更新完成后,才會在對應(yīng)的表結(jié)構(gòu)中刷新。

兩步存儲的目的是保證數(shù)據(jù)存儲的強一致性,防止在刷入磁盤的過程中,數(shù)據(jù)庫宕機(jī)導(dǎo)致數(shù)據(jù)不完整。

表頭的緩存區(qū)域以及表結(jié)構(gòu)的存儲塊都有校驗碼來檢驗數(shù)據(jù)的完整性,如果前者完整,后者不完整,直接講前者數(shù)據(jù)在后者中重新刷一份即可解決,如果前者不完整,說明從日志刷取的過程失敗,重新刷取即可。

到此這篇關(guān)于MySQL 數(shù)據(jù)持久化過程講解的文章就介紹到這了,更多相關(guān)MySQL 數(shù)據(jù)持久化 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 找到MySQL的優(yōu)點

    找到MySQL的優(yōu)點

    假設(shè)你是一個Access開發(fā)人員,而你想移植一個Access后臺到一個本地的MySQL 服務(wù)器用于開發(fā)和測試。你將維護(hù)你自己的解決方案并樂于使用Community Server
    2009-09-09
  • mysql 從一個表中查數(shù)據(jù)并插入另一個表實現(xiàn)方法

    mysql 從一個表中查數(shù)據(jù)并插入另一個表實現(xiàn)方法

    這篇文章主要介紹了mysql 從一個表中查數(shù)據(jù)并插入另一個表實現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Mysql性能優(yōu)化案例研究-覆蓋索引和SQL_NO_CACHE

    Mysql性能優(yōu)化案例研究-覆蓋索引和SQL_NO_CACHE

    這篇文章主要介紹了Mysql性能優(yōu)化案例研究-覆蓋索引和SQL_NO_CACHE,需要的朋友可以參考下
    2016-03-03
  • Mysql?查詢患某種疾病的患者語句

    Mysql?查詢患某種疾病的患者語句

    select?語句的作用是根據(jù)輸入的條件返回指定的數(shù)據(jù)結(jié)果,select?的語法可以有很多種查詢的組合,基本上能夠滿足我們所有的查詢數(shù)據(jù)需求,這篇文章主要介紹了Mysql?查詢患某種疾病的患者,需要的朋友可以參考下
    2022-10-10
  • MySQL數(shù)據(jù)庫備份方法說明

    MySQL數(shù)據(jù)庫備份方法說明

    MySQL數(shù)據(jù)庫備份方法說明...
    2007-07-07
  • MySQL GTID主備不一致的修復(fù)方案

    MySQL GTID主備不一致的修復(fù)方案

    這篇文章主要介紹了MySQL GTID主備不一致的修復(fù)方案,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-04-04
  • MySQL的重裝問題解決方法

    MySQL的重裝問題解決方法

    最近在工作上遇到了MySQL重裝的問題,今天記錄一下我的解決過程。不論我用控制面板的卸載刪除程序方式還是安全衛(wèi)士的卸載,都會遇到一個問題,就是安裝到如下圖位置,server start時就程序無響應(yīng)了,一直死在那里
    2013-04-04
  • MySQL的ORDER BY及優(yōu)化過程詳解

    MySQL的ORDER BY及優(yōu)化過程詳解

    在MySQL中,索引的最左匹配原則是指在使用索引進(jìn)行查詢時,會優(yōu)先匹配索引的最左側(cè)列,然后再匹配后續(xù)列,本文將基于InnoDB引擎,詳細(xì)分析如何優(yōu)化MySQL索引最左匹配下的ORDER BY語句,需要的朋友可以參考下
    2024-07-07
  • mac安裝mysql初始密碼忘記怎么辦

    mac安裝mysql初始密碼忘記怎么辦

    這篇文章主要為大家詳細(xì)介紹了mac安裝mysql忘記初始密碼的解決辦法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Mysql備份多個數(shù)據(jù)庫代碼實例

    Mysql備份多個數(shù)據(jù)庫代碼實例

    這篇文章主要介紹了Mysql備份多個數(shù)據(jù)庫代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12

最新評論

青州市| 东乡县| 滕州市| 武隆县| 揭东县| 邵东县| 梁山县| 平武县| 建平县| 洮南市| 盱眙县| 庐江县| 松潘县| 琼海市| 南召县| 信阳市| 新营市| 达拉特旗| 福州市| 黑龙江省| 菏泽市| 大石桥市| 神农架林区| 托里县| 黔西县| 玉林市| 常熟市| 普兰县| 桓台县| 湘潭市| 象州县| 深州市| 贵港市| 郁南县| 香格里拉县| 土默特右旗| 瑞金市| 拜城县| 五常市| 石楼县| 江都市|