女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MySQL三種日志講解

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2023-07-25 11:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

MySQL 日志包含了錯誤日志、查詢?nèi)罩尽⒙樵內(nèi)罩尽⑹聞?wù)日志、二進制日志等,如果存儲引擎使用的是 InnoDB ,二進制日志(binlog)和事務(wù)日志(包括redo log和undo log) 是肯定繞不過去的,本篇接下來詳細為大家介紹這三種日志。

redo log

為什么要有 redo log ?

我們都清楚,事務(wù)的四大特性其中有一個是持久性,簡單的說就是只要事務(wù)提交成功,對數(shù)據(jù)庫做的修改就會被永久保存下來,不會因為任何原因再回到原來的狀態(tài)。

MySQL 是怎么樣保證持久性的呢?最簡單的做法是在每次事務(wù)提交的時候,將該事務(wù)涉及修改的數(shù)據(jù)頁全部刷新回磁盤中,可是這么做存在嚴(yán)重的性能問題:

單個事務(wù)可能涉及修改多個數(shù)據(jù)頁,并且數(shù)據(jù)頁在物理上并不連續(xù),使用隨機IO寫入性能太差。

Innodb是以頁為單位進行磁盤交互的,一個事務(wù)有可能只會修改一個數(shù)據(jù)頁中的幾個字節(jié),如果這時候?qū)⑼暾臄?shù)據(jù)頁刷回磁盤的話,很浪費資源。

因此 MySQL 設(shè)計出了redo log,當(dāng)一條記錄更新的時候, InnoDB 引擎會先把記錄寫到 redo log 里面去,同時更新內(nèi)存,這樣就算這條數(shù)據(jù)更新成功了,完美地解決了性能問題(文件更小并且是順序IO)。

注意此時數(shù)據(jù)并沒有更新到磁盤上,InnoDB 會在恰當(dāng)?shù)臅r候把這條記錄更新到磁盤上去。這種先寫日志然后再將數(shù)據(jù)刷盤的機制,有個專有名詞——WAL(Write-ahead logging)。

redo log 如何刷到磁盤的呢?

redo log包含兩部分:

內(nèi)存中的日志緩沖(redo log buffer)

磁盤上的日志文件(redo log file)

每執(zhí)行一條DML語句,數(shù)據(jù)庫先將記錄寫入redo log buffer,然后后續(xù)某個時間點再一次性將多個操作記錄寫到redo log file。MySQL 一共支持三種寫入redo log file的時機,通過參數(shù)innodb_flush_log_at_trx_commit進行配置,如下圖所示:

11a928f4-29ff-11ee-a368-dac502259ad0.png

bin log

bin log 是 MySQL 的邏輯日志,由Server層進行記錄,用于記錄數(shù)據(jù)庫執(zhí)行的寫入性操作(不包括查詢)信息,以二進制的形式保存在磁盤中。無論你使用的是任何的存儲引擎,mysql數(shù)據(jù)庫都會記錄binlog日志。

與redo log日志一樣,binlog也有自己的刷盤策略,通過sync_binlog參數(shù)控制:

0 :每次提交事務(wù)前將binlog寫入os cache,由操作系統(tǒng)控制什么時候刷到磁盤

1 :采用同步寫磁盤的方式來寫binlog,不使用os cache來寫binlog

N :當(dāng)每進行n次事務(wù)提交之后,調(diào)用一次fsync() os cache中的binlog強制刷到磁盤

bin log 和 redo log 都用于記錄的修改之后的值,那么它們之間究竟有什么區(qū)別呢?

redo log 和 binlog 的區(qū)別

主要有以下三方面:

binlog 是 MySQL 的 Server 層實現(xiàn)的,所有的引擎都是可以的。redo log是InnoDB的日志。如果不使用InnoDB引擎,是沒有redo log的。

binlog是邏輯日志,記錄的是對哪一個表的哪一行做了什么修改;redo log是物理日志,記錄的是對哪個數(shù)據(jù)頁中的哪個記錄做了什么修改,可以理解為對磁盤上的哪個數(shù)據(jù)做了修改。

redo log 是有固定大小的,所以它的空間會用完,如果用完的話,一定要進行一些寫入磁盤的操作才可以繼續(xù); binlog 是可以追加寫入的,也就是 binlog 沒有空間的概念,一直寫就行了

undo log

數(shù)據(jù)庫事務(wù)四大特性中有一個是原子性,原子性指對數(shù)據(jù)庫的一系列操作,要么全部成功,要么全部失敗,不可能出現(xiàn)部分成功的情況。實際上,原子性底層就是通過undo log實現(xiàn)的。

undo log主要記錄了數(shù)據(jù)的邏輯變化,比如一條UPDATE語句,對應(yīng)一條相反UPDATE的undo log,一條INSERT語句,對應(yīng)一條DELETE的undo log,這樣在發(fā)生錯誤時,就能回滾到事務(wù)之前的數(shù)據(jù)狀態(tài)。

undo log 同時也是MVCC(多版本并發(fā)控制)實現(xiàn)的關(guān)鍵。

總結(jié)

redo log是InnoDB存儲引擎的一種日志,主要作用是崩潰恢復(fù),刷盤策略參數(shù) innodb_flush_log_at_trx_commit 推薦設(shè)置成2。

binlog是MySQL Server層的一種日志,主要作用是歸檔。

undo log是InnoDB存儲引擎的一種日志,主要作用是回滾。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 磁盤
    +關(guān)注

    關(guān)注

    1

    文章

    390

    瀏覽量

    25839
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    860

    瀏覽量

    27945
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    144

    瀏覽量

    10869
  • binlog
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    1325

原文標(biāo)題:還分不清bin log 、redo log 跟 undo log?

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    三種電源轉(zhuǎn)換器電路設(shè)計講解

      本文主要介紹了3.3V→5V電平轉(zhuǎn)換器、模擬增益電路和模擬補償電路三種電源轉(zhuǎn)換器的設(shè)計原理圖,對電路圖進行簡單的講解。  3.3V→5V電平轉(zhuǎn)換器可以直接構(gòu)成電平轉(zhuǎn)換,往往是采用集成方案。有
    發(fā)表于 09-30 16:26

    MySQL的六個日志類型

    MySQL日志管理
    發(fā)表于 04-24 16:57

    STM32的三種boot模式介紹

    淺識STM32的三種boot模式文章目錄淺識STM32的三種boot模式任務(wù)摘要一、認識boot1.三種BOOT模式介紹2.開發(fā)BOOT模式選擇3.STM32三種啟動模式4.
    發(fā)表于 12-10 07:46

    半導(dǎo)體極管的三種基本放大電路的三種連接法電路圖

    半導(dǎo)體極管的三種基本放大電路的三種連接法電路圖
    發(fā)表于 05-06 14:55 ?5753次閱讀
    半導(dǎo)體<b class='flag-5'>三</b>極管的<b class='flag-5'>三種</b>基本放大電路的<b class='flag-5'>三種</b>連接法電路圖

    三種不同的“防 Ping”技巧

    三種不同的“防 Ping”技巧 淺析三種不同的“防 Ping”方法   眾所周知,Ping命令是一個非常有用的網(wǎng)絡(luò)命令,大家常用它
    發(fā)表于 04-14 13:53 ?1227次閱讀

    晶體管放大電路的三種方法

    模擬電子技術(shù)中晶體管放大電路的方法有三種,PPT簡單講解
    發(fā)表于 03-24 14:34 ?0次下載

    jdbc注冊驅(qū)動的三種方式

    本文主要介紹了關(guān)于jdbc注冊驅(qū)動的三種方式。jdbc中注冊驅(qū)動,首先導(dǎo)入對應(yīng)的包,例如mysql-connector-java-5.0.8-bin.jar。驅(qū)動包是java和具體數(shù)據(jù)庫之間的連接
    的頭像 發(fā)表于 02-06 11:04 ?6184次閱讀
    jdbc注冊驅(qū)動的<b class='flag-5'>三種</b>方式

    詳談MySQL數(shù)據(jù)庫的不同日志和源碼

    任何一數(shù)據(jù)庫,都會擁有各種各樣的日志mysql也不例外。
    的頭像 發(fā)表于 07-02 16:52 ?2779次閱讀

    MySQL事務(wù)日志

    大家都清楚,日志MySQL 數(shù)據(jù)庫的重要組成部分,記錄著數(shù)據(jù)庫運行期間各種狀態(tài)信息。MySQL 日志主要包括「錯誤日志」、「查詢
    的頭像 發(fā)表于 11-14 09:58 ?1974次閱讀
    <b class='flag-5'>MySQL</b>事務(wù)<b class='flag-5'>日志</b>

    80C51的三種復(fù)位技術(shù)講解資料下載

    電子發(fā)燒友網(wǎng)為你提供80C51的三種復(fù)位技術(shù)講解資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 04-08 08:46 ?9次下載
    80C51的<b class='flag-5'>三種</b>復(fù)位技術(shù)<b class='flag-5'>講解</b>資料下載

    詳解MySQL日志的作用

    MySQL日志 主要包括錯誤日志、查詢日志、慢查詢日志、事務(wù)日志、二進制
    的頭像 發(fā)表于 07-22 14:44 ?1638次閱讀

    如何優(yōu)化MySQL中的join語句

    mysql中,join 主要有Nested Loop、Hash Join、Merge Join 這三種方式,我們今天來看一下最普遍 Nested Loop 循環(huán)連接方式,主要包括三種
    的頭像 發(fā)表于 04-24 17:03 ?1057次閱讀
    如何優(yōu)化<b class='flag-5'>MySQL</b>中的join語句

    mysql主從復(fù)制三種模式

    MySQL主從復(fù)制是一常見的數(shù)據(jù)同步方式,它可以實現(xiàn)將一個數(shù)據(jù)庫的更改同步到其他多個數(shù)據(jù)庫的功能。主從復(fù)制可以提高數(shù)據(jù)庫的可用性和性能,以及提供故障恢復(fù)和數(shù)據(jù)備份的支持。在MySQL中,有
    的頭像 發(fā)表于 11-16 14:04 ?1982次閱讀

    systemd journal收集日志三種方式

    隨著 systemd 成了主流的 init 系統(tǒng),systemd 的功能也在不斷的增加,比如對系統(tǒng)日志的管理。Systemd 設(shè)計的日志系統(tǒng)好處多多,這里筆者就不再贅述了,本文筆者主要介紹 systemd journal 收集日志
    的頭像 發(fā)表于 10-23 11:50 ?822次閱讀
    systemd journal收集<b class='flag-5'>日志</b>的<b class='flag-5'>三種</b>方式

    介紹三種常見的MySQL高可用方案

    在生產(chǎn)環(huán)境中,為了確保數(shù)據(jù)庫系統(tǒng)的連續(xù)可用性、降低故障恢復(fù)時間以及實現(xiàn)業(yè)務(wù)的無縫切換,高可用(High Availability, HA)方案至關(guān)重要。本文將詳細介紹三種常見的 MySQL 高可用
    的頭像 發(fā)表于 05-28 17:16 ?383次閱讀