MarriDB/MySQL的binlog group commit技術介紹
我們知道,作業系統使用頁面快取機制來填補記憶體訪問速度和磁碟訪問速度之間的差距。通常情況下,對磁碟檔案的寫都會先寫入到頁面快取中,
然後由作業系統來決定何時將修改過的髒頁重新整理到磁碟上。如果想確保修改已經持久寫到了磁碟,必須呼叫fsync或fdatasync。在關聯式資料庫中,
為了滿足ACID中的持久化屬性,也就是說事務提交併成功返回給客戶端之後,必須保證該事務的所有修改不能丟。無論是在資料庫程式崩潰的情況下,
還是在資料庫所在的伺服器發生當機或斷電的情況下,都必須保證資料不能丟,這就要求資料庫在事務提交過程中呼叫fsync或fdatasync將資料持久化
到磁碟。fsync是一個昂貴的系統呼叫,對於普通的磁碟,每秒只能完成幾百次的fsync操作,很明顯,fsync將會限制每秒提交的事務數,成為關係
資料庫的瓶頸。
對於MarriDB/MySQL來說,這種情況變得更加糟糕。在開啟binlog的情況下,為了保證主庫和從庫之間資料的一致性,MarriDB/MySQL使用了事務的
兩階段提交協議。在這種情況下,為了滿足資料的持久化需求,一個事務的提交最多會導致3次fsync操作。
為了提高MarriDB/MySQL在開啟binlog的情況下單位時間內的事務提交數,就必須減少每個事務提交過程中導致的fsync的呼叫次數。MarriDB從5.3版本開始,
引入了binlog group commit技術來解決這個問題。MySQL從5.6版本開始也加入了binlog group commit技術。
binlog group commit的基本思想是多個併發提交的事務之間共用一次fsync操作來實現事務對binlog修改的持久化。
然後由作業系統來決定何時將修改過的髒頁重新整理到磁碟上。如果想確保修改已經持久寫到了磁碟,必須呼叫fsync或fdatasync。在關聯式資料庫中,
為了滿足ACID中的持久化屬性,也就是說事務提交併成功返回給客戶端之後,必須保證該事務的所有修改不能丟。無論是在資料庫程式崩潰的情況下,
還是在資料庫所在的伺服器發生當機或斷電的情況下,都必須保證資料不能丟,這就要求資料庫在事務提交過程中呼叫fsync或fdatasync將資料持久化
到磁碟。fsync是一個昂貴的系統呼叫,對於普通的磁碟,每秒只能完成幾百次的fsync操作,很明顯,fsync將會限制每秒提交的事務數,成為關係
資料庫的瓶頸。
對於MarriDB/MySQL來說,這種情況變得更加糟糕。在開啟binlog的情況下,為了保證主庫和從庫之間資料的一致性,MarriDB/MySQL使用了事務的
兩階段提交協議。在這種情況下,為了滿足資料的持久化需求,一個事務的提交最多會導致3次fsync操作。
為了提高MarriDB/MySQL在開啟binlog的情況下單位時間內的事務提交數,就必須減少每個事務提交過程中導致的fsync的呼叫次數。MarriDB從5.3版本開始,
引入了binlog group commit技術來解決這個問題。MySQL從5.6版本開始也加入了binlog group commit技術。
binlog group commit的基本思想是多個併發提交的事務之間共用一次fsync操作來實現事務對binlog修改的持久化。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2119935/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL Binlog 介紹MySql
- MySQL group replication介紹MySql
- MySQL入門--複製技術介紹MySql
- 技術分享 | MySQL InnoDB Cluster Set 介紹MySql
- Async Commit 原理介紹MIT
- MySQL閃回技術之binlog2sql恢復binlog中的SQLMySql
- 技術分享丨 關於MySQL binlog解析那些事MySql
- 【MySQL】五、sync_binlog innodb_flush_log_at_trx_commit 淺析MySqlMIT
- AIGC底層技術介紹AIGC
- 容器技術和Docker介紹Docker
- MySQL Binlog 技術原理和業務應用案例分析MySql
- WiFi協議的調製技術介紹WiFi協議
- 液晶顯示技術TCON介紹
- Docker容器技術與Docker介紹Docker
- 負載均衡技術(一)———負載均衡技術介紹負載
- MySql介紹MySql
- Web前端技術的發展,介紹MV*模式Web前端模式
- MySQL組複製(MGR)全解析 Part 2 常用複製技術介紹MySql
- 人工智慧文生圖技術介紹人工智慧
- MySQL 5.7預設ONLY_FULL_GROUP_BY語義介紹以及故障解決MySql
- 技術分享 | MySQL Binlog 通過 MySQL 客戶端匯入資料庫效率低的原因MySql客戶端資料庫
- Mysql的binlog原理MySql
- SAP ABAP CDS view 檢視的 Replacement 技術介紹View
- 簡單介紹雲端計算的容器技術
- MySQL MVCC介紹MySqlMVC
- mysql MVCC 介紹MySqlMVC
- MySQL索引介紹MySql索引
- PHP phar:協議物件注入技術介紹PHP協議物件
- 《Learning ELK Stack》1 ELK技術棧介紹
- 網路技術DNS服務全介紹DNS
- 隱私計算相關技術介紹
- MySQL 的日誌:binlogMySql
- Mysql的redolog和binlogMySql
- mysql中SQL的概念介紹MySql
- ?【Alibaba中介軟體技術系列】「Sentinel技術專題」分散式系統的流量防衛兵的基本介紹(入門原始碼介紹)分散式原始碼
- 元宇宙八大關鍵技術介紹元宇宙
- 沉浸式夜遊中常見技術手段介紹
- Python技術之Number資料型別介紹Python資料型別
- MySQL:Redo & binlogMySql