在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    純手繪圖解 – MySQL undo log、redo log、binlog

    純手繪圖解 - MySQL undo log、redo log、binlog

    先看看一條SQL如何入庫的

    數(shù)據(jù)寫入詳細(xì)過程

  • 應(yīng)用服務(wù)器與MySQL建立連接
  • 通過連接發(fā)送一條SQL語句(update student set score=100 where score=50)
  • SQL依次經(jīng)過Server層的[分析器][優(yōu)化器][執(zhí)行器]
  • [執(zhí)行器]根據(jù)[執(zhí)行計(jì)劃]操作執(zhí)行引擎(InnoDB Engine)
  • InnoDB Engine從[磁盤]數(shù)據(jù)文件中將score=50讀取到內(nèi)存[BufferPool]中
  • 在修改之前,寫入一條[undo log]將修改之前的值score=50保存起來
  • 先將緩存池[BufferPool]中score=50更新為score=100
  • 寫入一條[redo log]將修改后的score=100存起來,用于異常場景事務(wù)[提交]
  • 寫入一條[bin log]將修改后的score=100存起來
  • 后臺IO線程將緩存池被修改的值score=100刷入磁盤
  • 為什么要拆分出兩層架構(gòu)

    這是一條非常簡單的SQL語句[update student set score=100 where score=50],從MySQL服務(wù)端接收SQL到寫入磁盤,經(jīng)過了Server層和InnoDB存儲引擎,中間摻雜著磁盤讀取、日志記錄、內(nèi)存更新、寫入磁盤。

    MySQL為什么將Server層和引擎層拆分?

    • 由MySQL架構(gòu)演變而來,進(jìn)而實(shí)現(xiàn)「解耦」的效果
    • 針對不同的場景,使用不同的存儲引擎,靈活性更強(qiáng)
    • MySQL中的數(shù)據(jù)用各種不同的技術(shù)存儲在文件中,每一種技術(shù)都使用不同的存儲機(jī)制、索引技巧、鎖定水平并最終提供不同的功能和能力

    MySQL主要包含2種存儲引擎

    • MyISAM(不支持事務(wù),訪問速度快)
    • InnoDB(主流,支持事務(wù))
    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年6月19日 09:08
    下一篇 2022年6月19日 09:08

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息