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

MySQL 表數據多久刷一次盤?

數據庫 MySQL
在 InnoDB 中,頁是數據被管理的最小的單位。當使用 InnoDB 作為存儲引擎的 MySQL 運行時,表中一行一行的數據會被組織在一頁一頁當中,放在 Buffer Pool 中。

前言事情是這樣的,在某乎的邀請回答中看到了這個問題:

-

然后當時我沒多想就啪一下寫下來這樣的答案:

這個其實要通過 MySQL 后臺線程來刷的,在 Buffer Pool 中被修改的過的 Page(頁)都會被標記成臟頁,放到一個鏈表(Flush 鏈表)里。

然后 MySQL 通過啟動后臺線程,在滿足條件時將 Flush 鏈表中的臟頁刷入磁盤。

滿足的條件是:臟頁的數量達到了 Buffer Pool 中頁數量的 **10%,當然 10% 這個值是可變的,通過配置項 innodb_max_dirty_pages_pct_lwm 來配置的,其默認值為 10%,并且這個值也必須小于另一個配置 innodb_max_dirty_pages_pct 的值(90%**)。

至于啟多少個線程,則是由另一個變量 innodb_page_cleaners 來控制的,默認是 4.一般都不會去改這個。

大概就是這樣。

但是,后面有兄弟在下面說:”我唔知你喺講乜“。

后面我回過頭去看,當時寫的確實有點過于跳躍了,過一段時間再去看有些不是那么連貫,打算重新把這個事情講清楚。

1. 表數據

我們這篇「短文」討論的是【MySQL 表數據多久刷一次盤】,從這個標題中我們可以分裂成兩個問題:

  • 刷什么到磁盤
  • 什么時候刷到磁盤

我們分開來討論。

2. 刷什么到磁盤

看上去有點廢話,肯定是將數據刷入磁盤。所以我們更多需要討論的是【數據是以什么樣的形式被刷入磁盤】。

在 InnoDB 中,頁是數據被管理的最小的單位。當使用 InnoDB 作為存儲引擎的 MySQL 運行時,表中一行一行的數據會被組織在一頁一頁當中,放在 Buffer Pool 中。

這一頁一頁的數據,就存放在 Buffer Pool 中。當 DML 語句(也就是 CRUD)語句對表數據進行了變更之后,數據所在的那一頁就會被標記為臟頁。

InnoDB 會用一個叫【Flush 鏈表】的結構來存放這些臟頁,凡是被放進該鏈表的頁都代表需要刷入磁盤,但不是立即刷入。

和 InnoDB 的其他日志例如 Redo Log 一樣,這些日志都是有自己的刷盤策略。例如 Redo Log,其刷盤策略可以用下圖來表示:

參數為0,Redo Log 會每隔一秒,寫入并且刷入磁盤。

參數為1,Redo Log 會在每次事務提交之后刷入磁盤

參數為2,每次事務提交,都會寫到 OS 緩存中去,然后每隔一秒將 OS 緩存中的數據刷入磁盤

而 Flush 鏈表也有自己的策略。

3. 什么時候刷到磁盤

接上節,策略就是:臟頁的數量達到了 Buffer Pool 中頁數量的 **10%**,就會觸發將 Flush 鏈表中的臟頁刷入磁盤。舉個例子,Buffer Pool 中總共有 100 張頁,臟頁如果達到了 10 頁就會啟動后臺線程,觸發刷盤。

當然,【10%】這個數值是可配置的,通過 MySQL 配置項 innodb_max_dirty_pages_pct_lwm 可以進行調整,只是默認值是 10%。但是我們調整的值不能超過某個最大值,這個最大值由 innodb_max_dirty_pages_pct 來指定,默認值為 90%。

換句話說,默認情況,刷盤閾值是 10%,如果需要自定義,則最大值不能超過 90%。

4. 誰來負責刷盤

上個小節已經說過了,會啟動線程來專門做這個事情,這個沒有什么疑問。我們需要關注的是會啟動多少個線程來做這個事。

答案是 4 個,我們也可以通過配置項 innodb_page_cleaners 來更改,但一般都不會去改這個值。

關于這個點就聊到這。

責任編輯:武曉燕 來源: SH的全棧筆記
相關推薦

2018-03-02 10:42:44

服務器數據備份

2019-11-18 13:42:55

MySQL數據庫遷移

2021-05-08 23:44:34

手機數據質量

2018-02-23 13:41:05

數據庫MySQL數據恢復

2021-10-25 09:16:27

MySQL分庫分表

2016-10-24 15:41:37

2019-04-18 14:06:35

MySQL分庫分表數據庫

2021-07-11 07:10:11

機械盤固態盤硬盤

2011-06-28 10:41:50

DBA

2020-07-27 09:37:31

Intel系統更新

2017-09-22 10:16:16

MySQL數據庫用戶數據

2021-12-27 10:08:16

Python編程語言

2020-10-24 13:50:59

Python編程語言

2019-08-19 01:34:38

數據庫SQL數據庫優化

2017-12-19 14:00:16

數據庫MySQL死鎖排查

2019-03-15 16:20:45

MySQL死鎖排查命令

2017-08-31 15:41:17

MysqlLVSRS機器

2018-07-11 10:24:33

數據恢復數據刪除

2020-08-12 08:25:43

數據庫MySQL技術

2024-06-27 10:02:14

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产日韩中文字幕 | 国产福利91精品一区二区三区 | 超碰免费在线观看 | 国产精品区二区三区日本 | 国产一级淫片免费视频 | 日韩一区二区久久 | 一区二区三区四区国产精品 | 日韩精品区 | 免费国产成人av | 国产91一区二区三区 | 男女网站视频 | 99爱国产 | 全免一级毛片 | 中文在线a在线 | 国产成人精品亚洲日本在线观看 | 日韩三级电影一区二区 | 激情的网站 | 国产99精品| 成人羞羞国产免费视频 | 一区二区三区免费看 | 日本精品一区二区三区在线观看 | 国产性网| 国产精品毛片一区二区在线看 | 中文字幕一区二区三区四区五区 | 亚洲精品在线看 | 亚洲高清视频在线 | 精品国产乱码久久久久久丨区2区 | 欧美精品在线观看 | 欧美亚洲国产一区二区三区 | 亚洲福利视频一区二区 | 成人午夜免费视频 | 观看av | 中文字幕成人在线 | 国产精品一区在线 | 午夜视频大全 | 亚洲一区不卡 | 日本中文字幕一区 | 日本三级日产三级国产三级 | 欧美一区二区三区大片 | www.干| 亚洲精品99999 |