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

Mysql數(shù)據(jù)庫(3)—架構(gòu)和日志

這篇具有很好參考價值的文章主要介紹了Mysql數(shù)據(jù)庫(3)—架構(gòu)和日志。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Mysql的架構(gòu)設(shè)計

Mysql分為Server層和存儲引擎層:

Server層

主要包括連接器、查詢緩存、分析器、優(yōu)化器、執(zhí)行器等,涵蓋 MySQL 的大多數(shù)核心服務(wù)功能,以及所有的內(nèi)置函數(shù)(如日期、時間、數(shù)學(xué)和加密函數(shù)等),所有跨存儲引擎的功能都在這一層實現(xiàn),比如存儲過程、觸發(fā)器、視圖等。

存儲引擎層

存儲引擎層負責(zé)數(shù)據(jù)的存儲和提取。其架構(gòu)模式是插件式的,支持 InnoDB、MyISAM、Memory 等多個存儲引擎?,F(xiàn)在最常用的存儲引擎是 InnoDB,它從 MySQL 5.5.5 版本開始成為了默認存儲引擎。也就是說如果我們在create table時不指定表的存儲引擎類型,默認會給你設(shè)置存儲引擎為InnoDB。

server層的執(zhí)行過程:

連接器

首先連接器會判斷該用戶提交的SQL是否有權(quán)限,如果有權(quán)限才會進行后續(xù)的執(zhí)行操作,連接器負責(zé)跟客戶端建立連接、獲取權(quán)限、維持和管理連接。

查詢緩存

對于有相同查詢條件的請求會在查詢緩存中判斷是否有之前請求的緩存結(jié)果。之前執(zhí)行過的語句及其結(jié)果可能會以 key-value 對的形式,被直接緩存在內(nèi)存中。key 是查詢的語句,value 是查詢的結(jié)果。如果你的查詢能夠直接在這個緩存中找到 key,那么這個 value 就會被直接返回給客戶端。如果語句不在查詢緩存中,就會繼續(xù)后面的執(zhí)行階段。執(zhí)行完成后,執(zhí)行結(jié)果會被存入查詢緩存中??梢钥吹?,如果查詢命中緩存,MySQL 不需要執(zhí)行后面的復(fù)雜操作,就可以直接返回結(jié)果,這個效率會很高。

分析器

如果本次請求沒有緩存命中,在分析器中用以進行詞法和語法的分析,如果不符合規(guī)范則會拋出異常。

優(yōu)化器

詞法語法分析正常的話會進行優(yōu)化器處理,在這個階段會進過成本代價分析后,選擇合適的索引。

執(zhí)行器

最后調(diào)用選擇的存儲引擎來進行數(shù)據(jù)的查詢和更新等操作。

Mysql數(shù)據(jù)庫(3)—架構(gòu)和日志,框架和中間件,Mysql

InnoDB存儲引擎的執(zhí)行過程

  1. 執(zhí)行一句SQL,先從考慮從內(nèi)存中的buffer pool加載所需的記錄數(shù)據(jù),如果buffer pool沒有相關(guān)數(shù)據(jù),就會從磁盤中將包含該記錄的頁加載到buffer pool中來;
  2. 在buffer pool中將記錄舊值寫到undo log中,undo log是InnoDB存儲引擎特有的日志類型,防止SQL執(zhí)行失敗需要回滾數(shù)據(jù),如果失敗直接從undo log中恢復(fù)即可;
  3. 在buffer pool中將舊值更新為新值,并將新值寫入到redo log中,undo log也是InnoDB存儲引擎特有的日志類型,防止SQL執(zhí)行的結(jié)果還沒有刷盤到磁盤中數(shù)據(jù)庫服務(wù)crash掉,如果這樣可以從undo log中重做;
  4. 將SQL執(zhí)行的操作信息寫入到binlog中,binlog按時刷盤寫入到磁盤中,binlog是server層的機制,任何存儲引擎都存在的機制;
  5. SQL執(zhí)行完成;

undo log和redo log

  1. redo log是重做日志。保存的是一個事務(wù)T在進行X操作后的新值N,可以表示為:<T,X,N>,是innodb存儲引擎特有的,支持crash之后恢復(fù)沒有刷盤的數(shù)據(jù)恢復(fù)。
  2. undo log是回退日志。保存的是一個事務(wù)T在進行Y操作后的老值O,可以表示為:<T,Y,O>,是innodb存儲引擎特有的,支持事務(wù)失敗后進行事務(wù)回滾。

binlog

  1. bin日志是mysql運行的日志,里面記錄了mysql運行的操作,他是在server層實現(xiàn)的日志。保存的是邏輯日志,即保存的是sql語句,通過bin 日志做數(shù)據(jù)恢復(fù)。也可以保存實際的數(shù)據(jù)格式。

buffer pool

mysql執(zhí)行一句更新操作的數(shù)據(jù)不會立即寫入磁盤,會先放到buffer pool中,這是內(nèi)存中的一片暫存區(qū),等一段時間會刷入磁盤中。這樣設(shè)計的作用是提高讀寫數(shù)據(jù)的效率。

WAL機制

WAL是先寫日志再進行刷盤操作,就是會先將操作寫入到redo log+binlog中,再將buffer pool中數(shù)據(jù)刷入磁盤;這樣做的優(yōu)勢是:(1)保障數(shù)據(jù)不會丟失。及時數(shù)據(jù)服務(wù)crash,也能從redo log中進行恢復(fù);(2)由于刷盤操作是順序操作,相對于隨機寫的效率會高很多;(3)實際修改先寫入buffer pool中,等內(nèi)存滿了在刷盤,這樣明顯降低了IO次數(shù),提升了IO效率。文章來源地址http://www.zghlxwxcb.cn/news/detail-693715.html


到了這里,關(guān)于Mysql數(shù)據(jù)庫(3)—架構(gòu)和日志的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • k8s創(chuàng)建數(shù)據(jù)庫mysql
MySQL數(shù)據(jù)庫之日志管理

    k8s創(chuàng)建數(shù)據(jù)庫mysql MySQL數(shù)據(jù)庫之日志管理

    ?本文使用的是本機掛載數(shù)據(jù),這樣存在一個弊端沒有pvc掛載好? 重點來了: 這種共享宿主機存儲的方法似乎可以解決Mysql數(shù)據(jù)庫數(shù)據(jù)恢復(fù)的場景,我們似乎可以萬事大吉了! But ,有的老鐵會問:如果我得宿主機掛了怎么辦?或者Pod沒有在上一次節(jié)點上拉起,而是在新的節(jié)點

    2023年04月27日
    瀏覽(301)
  • 《MySQL高級篇》十五、其他數(shù)據(jù)庫日志

    《MySQL高級篇》十五、其他數(shù)據(jù)庫日志

    我們在講解數(shù)據(jù)庫事務(wù)時,講過兩種日志: 重做日志 、 回滾日志 。 對于線上數(shù)據(jù)庫應(yīng)用系統(tǒng),突然遭遇 數(shù)據(jù)庫宕機 怎么辦?在這種情況下,定位宕機的原因就非常關(guān)鍵??梢圆榭磾?shù)據(jù)庫的錯誤日志。因為日志中記錄了數(shù)據(jù)庫運行中的診斷信息,包括了錯誤、警告和注釋等信

    2024年02月14日
    瀏覽(84)
  • MySQL基礎(chǔ)(三十六)其他數(shù)據(jù)庫日志

    MySQL基礎(chǔ)(三十六)其他數(shù)據(jù)庫日志

    千萬不要小看日志 。很多看似奇怪的問題,答案往往就藏在日志里。很多情況下,只有通過查看日志才能發(fā)現(xiàn)問題的原因,真正解決問題。所以,一定要學(xué)會查看日志,養(yǎng)成檢查日志的習(xí)慣,對提升你的數(shù)據(jù)庫應(yīng)用開發(fā)能力至關(guān)重要。 MySQL8.0 官網(wǎng)日志地址:“ https://dev.mys

    2024年02月05日
    瀏覽(95)
  • 十萬字圖文詳解mysql、redis、kafka、elasticsearch(ES)多源異構(gòu)不同種類數(shù)據(jù)庫集成、數(shù)據(jù)共享、數(shù)據(jù)同步、不同中間件技術(shù)實現(xiàn)與方案,如何構(gòu)建數(shù)據(jù)倉庫、數(shù)據(jù)湖、數(shù)倉一體化?

    數(shù)據(jù)庫大數(shù)據(jù)量、高并發(fā)、高可用解決方案,十萬字圖文詳解mysql、redis、kafka、elasticsearch(ES)多源異構(gòu)不同種類數(shù)據(jù)庫集成、數(shù)據(jù)共享、數(shù)據(jù)同步、不同中間件技術(shù)實現(xiàn)與方案,如何構(gòu)建數(shù)據(jù)倉庫、數(shù)據(jù)湖、數(shù)倉一體化?Delta Lake、Apache Hudi和Apache Iceberg數(shù)倉一體化技術(shù)架構(gòu)

    2024年02月07日
    瀏覽(56)
  • 【MySQL高級篇筆記-其他數(shù)據(jù)庫日志(下) 】

    【MySQL高級篇筆記-其他數(shù)據(jù)庫日志(下) 】

    此筆記為尚硅谷MySQL高級篇部分內(nèi)容 目錄 一、MySQL支持的日志 1、日志類型 2、日志的弊端 二、慢查詢?nèi)罩?slow query log) 三、通用查詢?nèi)罩?general query log) 1、問題場景? 2、查看當(dāng)前狀態(tài) 3、啟動日志 方式 1 :永久性方式 方式2:臨時性方式? 4、查看日志 5、停止日志 方式1:永

    2024年02月08日
    瀏覽(94)
  • MySQL-備份+日志:介質(zhì)故障與數(shù)據(jù)庫恢復(fù)

    MySQL-備份+日志:介質(zhì)故障與數(shù)據(jù)庫恢復(fù)

    本關(guān)任務(wù): 備份數(shù)據(jù)庫,然后再恢復(fù)它。 為了完成本關(guān)任務(wù),你需要掌握: 1.MySQL的恢復(fù)機制; 2.MySQL提供的備份與恢復(fù)工具。 和大多數(shù)DBMS一樣,MySQL利用備份、日志文件實現(xiàn)恢復(fù)。 具體理論知識在此不詳細介紹。 MySQL提供了以下工具: 邏輯備份工具:mysqldump 物理備份工具

    2024年02月05日
    瀏覽(105)
  • java springboot架構(gòu) 自定義注解保存項目業(yè)務(wù)日志,使用線程池保存到數(shù)據(jù)庫

    目錄 1:pom.xml依賴 2:注解類樣例 3:枚舉類 4:具體處理方法類 5:線程池類 1:pom.xml依賴 2:注解類樣例 3:枚舉類 4:具體處理方法類 5:線程池類

    2024年02月15日
    瀏覽(52)
  • MySQL數(shù)據(jù)庫架構(gòu)

    MySQL數(shù)據(jù)庫架構(gòu)

    MySQL架構(gòu)自頂向下大致可以分為 連接層 , SQL層 , 存儲引擎層 , 物理文件層 。架構(gòu)如下 客戶端連接器,MySQL向外提供交互接口連接各種不同的客戶端。 客戶端/應(yīng)用程序:客戶端是與MySQL系統(tǒng)進行交互的組件,它可以是命令行工具、圖形用戶界面 (GUI) 或各種編程語言中的數(shù)據(jù)庫

    2024年02月13日
    瀏覽(15)
  • MySQL數(shù)據(jù)庫——MySQL慢查詢?nèi)罩荆⊿low Query Log)

    慢查詢?nèi)罩居脕碛涗浽?MySQL 中執(zhí)行時間超過指定時間的查詢語句。通過慢查詢?nèi)罩?,可以查找出哪些查詢語句的執(zhí)行效率低,以便進行優(yōu)化。 通俗的說,MySQL 慢查詢?nèi)罩臼桥挪閱栴}的 SQL 語句,以及檢查當(dāng)前 MySQL 性能的一個重要功能。如果不是調(diào)優(yōu)需要,一般不建議啟動該

    2024年02月06日
    瀏覽(85)
  • 阿里云日志服務(wù)Logstore與MySQL數(shù)據(jù)庫關(guān)聯(lián)

    已采集日志到日志服務(wù)。更多信息,請參見數(shù)據(jù)采集。 已為日志字段創(chuàng)建索引。更多信息,請參見創(chuàng)建索引。 已有可用的MySQL數(shù)據(jù)庫。更多信息,請參見創(chuàng)建數(shù)據(jù)庫和賬號。 1、在MySQL數(shù)據(jù)庫中,創(chuàng)建用戶屬性表(即 chiji_user 表)。 2、添加白名單。如果是rds,設(shè)置ip白名單;

    2024年02月10日
    瀏覽(89)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包