日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Binlog in Redo

Binlog in Redo功能指在事務提交時將Binlog內容同步寫入到Redo Log中,減少對磁盤的操作,提高數據庫性能。

前提條件

實例版本為MySQL 8.0(內核小版本20200430或以上)。

背景信息

在MySQL關鍵業務場景中,為了業務數據的安全,事務提交時必須實時保存對應的Binlog和Redo Log,即以下兩個參數必須同時設置為1:

sync_binlog = 1;
innodb_flush_log_at_trx_commit = 1;

由于每個事務提交會對磁盤進行兩次I/O操作,雖然Binlog采用了Group Commit的方式合并I/O來提升效率,但兩次I/O等待的本質沒有改變,影響事務處理的效率,當使用云盤存儲時,影響會更明顯。I/O合并的效率是由同時提交的并發事務數量決定的,當并發量不夠時I/O合并的效果也不理想,表現為少量的寫操作事務提交時所需要的時間比較久,響應時間較長。

為了提高事務提交效率,AliSQL精心設計了Binlog in Redo機制(設置參數persist_binlog_to_redo = on開啟),即在事務提交時將Binlog內容同步寫入到Redo Log中。當事務提交時,只需要將Redo Log保存到磁盤中,從而減少一次對磁盤的操作,而Binlog文件則采用異步的方式,用單獨的線程周期性的保存到磁盤中。在異常重啟后,系統會用Redo Log中的Binlog內容來補齊Binlog文件。由于減少了一次I/O操作,性能得到了提升,響應時間變的更短,同時Binlog文件保存次數的減少,極大地降低了文件系統因文件長度實時變化帶來的文件同步(fsync)壓力,也提升了文件系統的性能。

Binlog in Redo功能不會改變Binlog的格式,基于Binlog的復制及第三方工具也不會受任何影響。

注意事項

開啟Binlog in Redo功能后,本地盤實例如果需要使用物理備份文件恢復到自建數據庫,需要使用RDS提供的XtraBackup工具。安裝XtraBackup工具請參見工具準備

參數介紹

  • persist_binlog_to_redo

    Binlog in Redo功能開關。全局系統變量,取值:on或off。修改本參數立刻生效,不需要重啟實例。

    說明

    您只需要設置persist_binlog_to_redo = on即可正常使用Binlog in Redo功能,不需要修改其他參數(sync_binlog = 1自動失效)。

  • sync_binlog_interval

    Binlog異步保存的間隔。全局系統變量,當persist_binlog_to_redo = on時生效。默認值:50,單位:毫秒(ms),通常使用默認值即可。修改本參數立刻生效,不需要重啟實例。

性能壓力測試

  • 測試環境

    • 應用服務器:阿里云ECS實例

    • RDS實例規格: 32核、64 GB內存、ESSD云盤

    • 實例類型:高可用系列(數據復制方式為異步復制)

  • 測試用例

    使用的Sysbench內置用例如下:

    • oltp_update_non_index

    • oltp_insert

    • oltp_write_only

  • 測試結果

    • oltp_update_non_index

      開啟Binlog in Redo后,QPS在低并發場景下提升顯著,延遲也較低。

      oltp_update_non_index-QPSoltp_update_non_index-laterncy

    • oltp_insert

      開啟Binlog in Redo后,QPS在低并發場景下提升顯著,延遲也較低。

      oltp_insert-QPSoltp_insert-latency

    • oltp_write_only

      開啟Binlog in Redo后,QPS在低并發場景下有所提升,延遲也較低。

      oltp_write_only-QPSoltp_write_only-latency

    • Binlog Fsync次數對比

      開啟Binlog in Redo后,Binlog fsync的次數大幅降低。

      Binlog Fsync

測試總結

  • oltp_update_non_index和oltp_insert只包含單語句事務,事務提交次數多,而oltp_write_only包含多語句事務(2個UPDATE、1個DELETE、1個INSERT),相比oltp_update_non_index和oltp_insert,事務提交次數較少,所以oltp_update_non_index和oltp_insert的性能提升比oltp_write_only更為明顯。

  • 在低于256并發時,Binlog in Redo功能可以明顯提升性能和降低延遲。對絕大多數的實際使用場景來說,Binlog in Redo效果顯著。

  • Binlog in Redo功能開啟后會大幅降低Binlog fsync的次數,可以提升文件系統的性能。