成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:詳細說說 bin log、redo log,我...

數據庫 MySQL
今天,民工哥就上次那位讀者遇到的問題,分享一下這方面相關的知識,希望對后面要去面試,或者學習這塊的讀者有一定幫助或參考價值。如果你感覺文章對你有用。

 前段時間,有一個讀者后臺問我:民工哥,我前幾天去面試,就因為我簡歷上寫著精通 MySQL,面試官就一個勁的追著我問:什么 binlog,redo log,而且還是怎么細就怎么問,搞我的一臉懵逼。。。

當時,我也看到這話也是一臉懵逼的狀態,只是呵呵一笑,回了他一句:老弟,你都工作 3 年了,連 bin log、redo log 都不知道,不應該啊。。。

所以,今天,民工哥就上次那位讀者遇到的問題,分享一下這方面相關的知識,希望對后面要去面試,或者學習這塊的讀者有一定幫助或參考價值。如果你感覺文章對你有用,請不要吝嗇你的在看與轉發支持,民工哥在這先謝謝大家了。

首先,我們先來看看一次查詢/更新語句流程圖

本文會將重點放在執行器<->存儲引擎之間的交互。

mysql不是每次數據更改都立刻寫到磁盤,而是會先將修改后的結果暫存在內存中,當一段時間后,再一次性將多個修改寫到磁盤上,減少磁盤io成本,同時提高操作速度。

mysql通過WAL(write-ahead logging)技術保證事務

在同一個事務中,每當數據庫進行修改數據操作時,將修改結果更新到內存后,會在redo log添加一行記錄記錄“需要在哪個數據頁上做什么修改”,并將該記錄狀態置為prepare,等到commit提交事務后,會將此次事務中在redo log添加的記錄的狀態都置為commit狀態,之后將修改落盤時,會將redo log中狀態為commit的記錄的修改都寫入磁盤。過程如下圖

redo log記錄方式

redolog 的大小是固定的,在 mysql 中可以通過修改配置參數innodb_log_files_in_group 和 innodb_log_file_size 配置日志文件數量和每個日志文件大小,redolog 采用循環寫的方式記錄,當寫到結尾時,會回到開頭循環寫日志。如下圖

write pos表示日志當前記錄的位置,當ib_logfile_4寫滿后,會從ib_logfile_1從頭開始記錄;check point表示將日志記錄的修改寫進磁盤,完成數據落盤,數據落盤后checkpoint會將日志上的相關記錄擦除掉,即write pos->checkpoint之間的部分是redo log空著的部分,用于記錄新的記錄,checkpoint->write pos之間是redo log待落盤的數據修改記錄。當writepos追上checkpoint時,得先停下記錄,先推動checkpoint向前移動,空出位置記錄新的日志。建議收藏備查!MySQL 常見錯誤代碼說明

有了redo log,當數據庫發生宕機重啟后,可通過redo log將未落盤的數據恢復,即保證已經提交的事務記錄不會丟失。

有了redo log,為啥還需要binlog呢?

  •  1、redo log的大小是固定的,日志上的記錄修改落盤后,日志會被覆蓋掉,無法用于數據回滾/數據恢復等操作。
  •  2、redo log是innodb引擎層實現的,并不是所有引擎都有。

基于以上,binlog必不可少

  •  1、binlog是server層實現的,意味著所有引擎都可以使用binlog日志
  •  2、binlog通過追加的方式寫入的,可通過配置參數max_binlog_size設置每個binlog文件的大小,當文件大小大于給定值后,日志會發生滾動,之后的日志記錄到新的文件上。
  •  3、binlog有兩種記錄模式,statement格式的話是記sql語句, row格式會記錄行的內容,記兩條,更新前和更新后都有。

binlog和redo log必須保持一致,不允許出現binlog有記錄但redolog沒有的情況,反之亦然。之前說過在一個事務中,redolog有prepare和commit兩種狀態,所以,在redolog狀態為prepare時記錄binlog可保證兩日志的記錄一致,下圖列出各種情況來說明。

現在我們再來看看整個完整的流程圖

相關參數設置建議

  •  1、innodb_flush_log_at_trx_commit:設置為1,表示每次事務的redolog都直接持久化到磁盤(注意是這里指的是redolog日志本身落盤),保證mysql重啟后數據不丟失。
  •  2、sync_binlog:設置為1,表示每次事務的binlog都直接持久化到磁盤(注意是這里指的是binlog日志本身落盤),保證mysql重啟后binlog記錄是完整的。 

 

責任編輯:龐桂玉 來源: 民工哥技術之路
相關推薦

2024-06-11 00:00:02

MySQL數據庫系統

2022-11-08 11:26:13

Go逃逸代碼

2020-12-04 06:27:04

序列化面試官Java

2022-02-21 17:24:18

序列化對象存儲

2021-11-09 14:08:45

DockerDockerfileJava

2020-07-02 07:52:11

RedisHash映射

2024-03-05 10:33:39

AOPSpring編程

2024-08-22 10:39:50

@Async注解代理

2024-05-30 08:04:20

Netty核心組件架構

2024-02-29 16:49:20

volatileJava并發編程

2023-12-27 18:16:39

MVCC隔離級別幻讀

2025-04-08 00:00:00

@AsyncSpring異步

2024-11-19 15:13:02

2025-04-16 00:00:01

JWT客戶端存儲加密令

2024-08-12 17:36:54

2024-08-29 16:30:27

2021-07-28 08:32:03

MySQLRedo存儲

2024-02-20 08:13:35

類加載引用Class

2024-03-28 10:37:44

IoC依賴注入依賴查找

2024-07-31 08:28:37

DMAIOMMap
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕在线免费视频 | 亚洲导航深夜福利涩涩屋 | 久久av在线播放 | 亚洲欧美国产一区二区三区 | 中文字幕91 | 国产精品毛片一区二区在线看 | 日韩在线精品视频 | 美日韩精品 | 亚洲逼院 | 免费黄色在线观看 | 99在线精品视频 | 国产男女视频网站 | 男人的天堂在线视频 | 免费的日批视频 | 精品91视频 | 日日干日日色 | 九九九视频 | 九九热免费看 | 欧美日韩亚洲三区 | 人人人人干 | 亚洲免费久久久 | 亚洲国产成人精品一区二区 | 欧美一级小视频 | aaaa一级毛片 | 国产专区免费 | 国产日韩欧美二区 | 国产精品成人国产乱一区 | 亚洲精彩视频在线观看 | 久久久久国产精品一区二区 | 日韩在线免费视频 | 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 国产精品91久久久久久 | 中文字幕av亚洲精品一部二部 | 欧美成人免费在线视频 | 亚洲精品66 | 国产免费又色又爽又黄在线观看 | 国产偷自视频区视频 | 亚洲不卡在线观看 | 久久中文字幕一区 | 黄色片视频 | 91视频精选 |