搜尋
首頁資料庫mysql教程了解InnoDB的Checkpoint技術

了解InnoDB的Checkpoint技術

Oct 28, 2020 pm 05:14 PM
innodb

##mysql教學##欄位帶大家了解InnoDB的Checkpoint技術。

了解InnoDB的Checkpoint技術

了解InnoDB的Checkpoint技術

################ ###########################就是在某個時間點刷磁碟回到儲存池中的動作######## #遇到的問題?###############都知道緩衝池的出現是為了解決CPU與磁碟速度之間的鴻溝,免得我們在讀寫資料庫的時候還需要進行磁碟IO操作。有了緩衝池後,所有的頁操作首先都是在緩衝池內完成的。## ####如一個DML語句,進行更新資料或刪除操作時,此時改變了緩衝池頁中的記錄,此時因為緩衝池頁的資料比磁碟的新,此時的頁就稱為髒頁。######不管怎樣,總會後的記憶體頁資料需要刷回磁碟裡,這裡就涉及幾個問題:#########如果每次一個頁發生變化,就將新的第一個版本刷新到磁碟,那麼這個頭部是非常大的######如果熱點資料集中在某幾個頁中,那麼資料庫的效能將會變得非常差######如果在緩衝池將頁的新版本刷新到磁碟時發生了宕機,那麼資料就無法恢復了########Write Ahead Log(預寫式日誌)######WAL策略解決了刷新第一張資料到磁碟時發生宕機而導致資料遺失的問題,是關係資料庫系統中用於提供原子性和持久性(ACID屬性中的兩個)的一系列技術。######WAL策略核心點修改就是#########redo log###,每當有交易提交時,先寫入###redo log###(重做日誌),在緩衝資料池頁面,這樣當發生掉電之類的情況時系統可以在重啟後繼續操作##### #WAL策略機制原理######InnoDB為了確保資料不會遺失,維護了重做日誌。在緩衝池的資料頁修改之前,需要先將記錄的內容到redo log中,並確保redo log早於對應的資料頁落盤,這就是WAL策略。###

當故障發生而導致記憶體資料遺失後,InnoDB會在重新啟動時,透過重播redo log,將緩衝池資料頁恢復到崩潰前的狀態。

Checkpoint

照理說有了WAL策略,我們就可以高枕無憂了。但其問題點又出現在redo log上面:

  • redo log 不可能是無限大的,不能沒完沒了的存儲我們的資料等待一起刷新到磁碟
  • 在資料庫怠機復原時,如果redo log 太大的話恢復的代價也是非常大的

#所以為了解決髒頁的刷新效能,髒頁應該在什麼時間、什麼情況下進行髒頁的刷新就用到了Checkpoint技術。

Checkpoint 的目的

1、縮短資料庫的復原時間

當資料庫怠機復原時,不需要重做所有的日誌資訊。因為Checkpoint前的資料頁已經刷回磁碟了。只需要Checkpoint後的redo log進行恢復就好了。

2、緩衝池不夠用時,將髒頁刷新到磁碟

當緩衝池空間不足時,根據LRU演算法會溢出最近最少使用的頁,若此頁為髒頁,那麼需要強制執行Checkpoint,將髒頁也就是頁的新版本刷回磁碟。

3、redo log不可用時,刷新髒頁

了解InnoDB的Checkpoint技術

#如圖redo log 的不可用是因為當前資料庫對其設計都是循環使用的,所以其空間並不是無限大。

當redo log被寫滿, 因為此時系統不能接受更新, 所有更新語句都會被堵住。

此時必須強制產生Checkpoint需要將write pos 向前推進,推進範圍內的髒頁都需要刷新到磁碟

Checkpoint 的種類

Checkpoint發生的時間、條件及髒頁的選擇等都非常複雜。

Checkpoint 每次刷新多少個髒頁到磁碟?

Checkpoint每次從哪裡拿髒頁?

Checkpoint 什麼時間被觸發?

面對上面的問題,InnoDB儲存引擎內部為我們提供了兩種Checkpoint:

  • Sharp Checkpoint

    發生在資料庫關閉時將所有的髒頁都刷新回磁盤,這是預設的工作方式,參數innodb_fast_shutdown=1

  • Fuzzy Checkpoint

    #InnoDB儲存引擎內部使用此模式,只刷新一部分髒頁,而不是刷新所有的髒頁回磁碟

#FuzzyCheckpoint發生的情況

  • Master Thread Checkpoint

    差不多以每秒或每十秒的速度從緩衝池的髒頁清單中刷新一定比例的頁回磁碟。

    這個過程是非同步的,也就是此時InnoDB儲存引擎可以進行其他的操作,使用者查詢執行緒不會阻塞

  • FLUSH_LRU_LIST Checkpoint

    #因為LRU清單要確保一定數量的空閒頁可使用,所以如果不夠會從尾部移除頁,如果移除的頁有髒頁,就會進行此Checkpoint。

    5.6版本後,這個Checkpoint放在了一個單獨的Page Cleaner線程中進行,並且用戶可以透過參數innodb_lru_scan_depth控制LRU列表中可用頁的數量,該值預設為1024

  • Async/Sync Flush Checkpoint

    指的是redo log檔案不可用的情況,這時需要強制將一些頁刷新回磁碟,而此時髒頁是從髒頁列表中選取的

    5.6版本後不會封鎖使用者查詢

  • Dirty Page too much Checkpoint 即髒頁的數量太多,導致InnoDB儲存引擎強制進行Checkpoint。

    其目的總的來說還是為了保證緩衝池中有足夠可用的頁。

    其可由參數innodb_max_dirty_pages_pct控制,例如該值為75,表示當緩衝池中髒頁佔據75%時,強制進行CheckPoint

#總結

  • 因為CPU和磁碟間的鴻溝的問題,從而出現緩衝池資料頁來加快資料庫DML操作

  • 因為緩衝池資料頁與磁碟資料一致性的問題,因而出現WAL策略(核心就是redo log)

  • 因為緩衝池髒頁的刷新效能問題,因此出現Checkpoint技術

InnoDB 為了提高執行效率,並不會每次DML操作都和磁碟互動進行持久化。而是透過Write Ahead Log 先策略寫入redo log保證事物的持久化。

對於事物中修改的緩衝池髒頁,會透過非同步的方式刷盤,而記憶體空閒頁和redo log的可用是透過Checkpoint技術來保證的。

更多相關免費學習推薦:mysql教學##(影片)

#

以上是了解InnoDB的Checkpoint技術的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:juejin。如有侵權,請聯絡admin@php.cn刪除
MySQL的位置:數據庫和編程MySQL的位置:數據庫和編程Apr 13, 2025 am 12:18 AM

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

MySQL:從小型企業到大型企業MySQL:從小型企業到大型企業Apr 13, 2025 am 12:17 AM

MySQL適合小型和大型企業。 1)小型企業可使用MySQL進行基本數據管理,如存儲客戶信息。 2)大型企業可利用MySQL處理海量數據和復雜業務邏輯,優化查詢性能和事務處理。

幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?Apr 13, 2025 am 12:16 AM

InnoDB通過Next-KeyLocking機制有效防止幻讀。 1)Next-KeyLocking結合行鎖和間隙鎖,鎖定記錄及其間隙,防止新記錄插入。 2)在實際應用中,通過優化查詢和調整隔離級別,可以減少鎖競爭,提高並發性能。

mysql:不是編程語言,而是...mysql:不是編程語言,而是...Apr 13, 2025 am 12:03 AM

MySQL不是一門編程語言,但其查詢語言SQL具備編程語言的特性:1.SQL支持條件判斷、循環和變量操作;2.通過存儲過程、觸發器和函數,用戶可以在數據庫中執行複雜邏輯操作。

MySQL:世界上最受歡迎的數據庫的簡介MySQL:世界上最受歡迎的數據庫的簡介Apr 12, 2025 am 12:18 AM

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

MySQL的重要性:數據存儲和管理MySQL的重要性:數據存儲和管理Apr 12, 2025 am 12:18 AM

MySQL是一個開源的關係型數據庫管理系統,適用於數據存儲、管理、查詢和安全。 1.它支持多種操作系統,廣泛應用於Web應用等領域。 2.通過客戶端-服務器架構和不同存儲引擎,MySQL高效處理數據。 3.基本用法包括創建數據庫和表,插入、查詢和更新數據。 4.高級用法涉及復雜查詢和存儲過程。 5.常見錯誤可通過EXPLAIN語句調試。 6.性能優化包括合理使用索引和優化查詢語句。

為什麼要使用mysql?利益和優勢為什麼要使用mysql?利益和優勢Apr 12, 2025 am 12:17 AM

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。Apr 12, 2025 am 12:16 AM

InnoDB的鎖機制包括共享鎖、排他鎖、意向鎖、記錄鎖、間隙鎖和下一個鍵鎖。 1.共享鎖允許事務讀取數據而不阻止其他事務讀取。 2.排他鎖阻止其他事務讀取和修改數據。 3.意向鎖優化鎖效率。 4.記錄鎖鎖定索引記錄。 5.間隙鎖鎖定索引記錄間隙。 6.下一個鍵鎖是記錄鎖和間隙鎖的組合,確保數據一致性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用