PostgreSQL 多路並行 xlog 設計

2021-07-25 13:50:15 字數 497 閱讀 8934

資料庫的redo記錄了事務的重做資訊,它最重要的功能之一是用來恢復資料庫,例如當資料庫crash後,需要從資料庫的一致檢查點開始,讀取redo並回放。

為了保證事務回放的先後順序,xlog是序列的,所以寫xlog時也需要鎖的。

為了提高寫效能,postgresql使用了xlog buffer來緩解寫壓力。

在使用了xlog buffer或者xlog使用了ssd硬碟後,序列的寫可能會成為瓶頸。

本文旨在研究多路並行xlog的實現,從而減少不必要的等待,提高寫的吞吐率。

當使用了多路xlog後,不同路數的xlog相互之間是沒有鎖競爭的,大大提高了xlog的寫併發。

同時,為了保證xlog回放時的先後順序,每一筆xlog都需要申請乙個時間戳,並寫入xlog檔案中,回放時嚴格按照時間戳順序來回放。

對於檢查點的建立,多路xlog都必須完成檢查點的建立,才是乙個有效的檢查點。

從測試結果來看,使用多路xlog的話,測試並行度越高,效能表現相比沒有xlog並行的越好。

PostgreSQL官方並行更新時間表

2013年10月,建立了兩個主要的基礎架構 dynamic background workers 和 dynamic shared memory。2014年11月,amit kapila發布了並行順序掃瞄 parallel sequential scan 的草案補丁,robert haas 發布了並...

PostgreSQL 9 6發布 支援並行

9.6版本加入了對一些查詢操作的並行支援,可以利用計算機的幾個甚至所有核心來執行操作,返回結果更快。目前並行的操作有順序表掃瞄,聚合和連線。取決於操作細節和核心數目的不同,並行對大資料檢索的效率可以提高32倍左右。我遷移將我們的整個基因組學資料平台 在老的mysql中大約有250億行 遷移到乙個po...

Delphi D10 X 使用並行程式設計庫

delphi中的rtl 執行庫 提供了並行程式設計庫 ppl parallel programming library 讓您的應用程式可以在跨平台應用中有效的使用多個cpu並行執行任務的能力。ppl包括正在執行的任務 加入的任務 等待任務組等多個先進功能。因為系統提供了乙個會自動進行自我調整 基於c...