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 Binlog 介紹MySql
- MySQL group replication介紹MySql
- mysql binlog詳細介紹MySql
- MySQL Binlog 事件介紹篇MySql事件
- MySQL/InnoDB和Group CommitMySqlMIT
- MySQL入門--複製技術介紹MySql
- 技術分享 | MySQL InnoDB Cluster Set 介紹MySql
- MySQL的binlog的格式及優缺點介紹MySql
- MySQL Binlog三種格式介紹及分析MySql
- mysql表分割槽技術詳細介紹MySql
- AJAX技術介紹
- Async Commit 原理介紹MIT
- 容災技術介紹
- JSF技術介紹JS
- MySQL binlog三種格式的優缺點和修改方法介紹MySql
- MySQL閃回技術之binlog2sql恢復binlog中的SQLMySql
- 容器技術和Docker介紹Docker
- 負載均衡技術介紹負載
- 一種蜜網技術的介紹
- MySQL Binlog 技術原理和業務應用案例分析MySql
- 技術分享丨 關於MySQL binlog解析那些事MySql
- mysql sync_binlog和 innodb_flush_log_at_trx_commitMySqlMIT
- .NET環境下Email的技術介紹AI
- WiFi協議的調製技術介紹WiFi協議
- Docker容器技術與Docker介紹Docker
- 漏洞挖掘利器-Fuzz技術介紹
- ORACLE流複製技術介紹Oracle
- JDBC介面技術介紹1 (轉)JDBC
- JDBC介面技術介紹2 (轉)JDBC
- 負載均衡技術(一)———負載均衡技術介紹負載
- 【MySQL】sync_binlog innodb_flush_log_at_trx_commit 淺析MySqlMIT
- Web前端技術的發展,介紹MV*模式Web前端模式
- 簡單介紹雲端計算的容器技術
- 大資料時代的技術hive:hive介紹大資料Hive
- RAID技術介紹和總結AI
- 個推技術實現原理介紹
- 虛擬化技術(=)難點介紹