PGCon 2023参加レポート - PostgreSQL 16「Parallel apply」の紹介:技術者Blog
PostgreSQLインサイド


黒田 隼人
富士通株式会社
ソフトウェアオープンイノベーション事業本部 データマネジメント事業部
はじめに
2023年5月30日から6月2日にかけて開催されたPostgreSQL Conference 2023(PGCon 2023)に参加しました。この記事では、私が担当したセッションの内容を中心に紹介します。
図1:会場となったオタワ大学
PostgreSQL Conference(PGCon)とは
PGConは毎年カナダのオタワで開催される国際カンファレンスで、PostgreSQLのユーザーと開発者が一堂に会し、講演や議論を交わします。近年はCOVID-19の影響で中止またはオンラインでの開催となっていましたが、今年は3年ぶりに実会場での開催となりました。
私たち富士通からは3名(Amit Kapila、Peter Smith、黒田)が参加し、4つの講演と1つのアンカンファレンスセッション(詳細は「関連リンク」を参照)を主催しました。
図2:黒田の講演の様子
講演内容:論理レプリケーションの性能向上
私の講演(PGCon 2023オフィシャルのページへ)は大きく2つのパートで構成されていました。講演の前半では論理レプリケーションの基本的なレビューを行い、大規模トランザクションの複製における問題点とそれまでの改善策について紹介しました。
論理レプリケーションとは、データに対して行われた変更を抽出し、別のPostgreSQLサーバーへと複製する仕組みです。論理レプリケーションでは、パブリッシャーは「どのテーブル内のどの行が変更されたか?」という論理的な情報を転送し、受け取ったサブスクライバーがその情報を元に変更内容を復元して適用します。本機能の大きな特徴は、ストリーミングレプリケーションとは異なり、異種OS間や異なるPostgreSQLメジャーバージョン間でも変更を複製できることです。詳細な仕組みやその他の違いについては、以下の記事で解説しています。
この機能はPostgreSQL 10から導入されましたが、当初からバッチ処理のような大規模なトランザクションの適用遅延が問題となってきました。それはトランザクション内の変更差分の転送がパブリッシャーのコミット後から始まるためで、トランザクションが長ければ長いほど、転送開始はより遅れてしまいます。これに対する改善としてPostgreSQL 14からは、パブリッシャー上で実行中のトランザクションの転送が可能になりました。詳しい改善内容については、以下のブログで解説しています。
しかし、その受信と適用は依然としてパブリッシャー上でのコミット後であり、適用遅延を防ぐには十分とは言えませんでした。
図3:PostgreSQL 14での大規模トランザクションに関する改善(講演資料より)
講演の後半では、PostgreSQL 16の主要な新機能「Parallel apply」を紹介しました。この新機能は大規模トランザクションの処理を高速化し、論理レプリケーションの適用遅延問題を解決することを目指しています。
Parallel applyのアーキテクチャーは図4のとおりです。
図4:Parallel applyのアーキテクチャー(講演資料より)
本機能では、新たなバックグラウンドワーカとして「並列適用ワーカ」を導入しています。このワーカは大規模トランザクションの一部を受信した際に起動され、変更差分の適用を行います。既存の適用ワーカは受信内容を並列適用ワーカに引き渡し、新たに生まれた並列適用ワーカは受け取った内容をすぐにデータベースに適用します。ただし、実際に変更内容がコミットされるのはパブリッシャー上でのコミット後であり、未コミットのデータが反映されることやトランザクションの順序が変わることはありません。この新しいワーカにより、サブスクライバーは受信した大規模トランザクションを即座に適用できるため、図5に示すように適用遅延を最大40%程度削減することが可能です。
図5:Parallel applyによる性能改善(講演資料より)
講演の後、いくつかの質問を受け、論理レプリケーションのアーキテクチャー、一般的な利用シーン(異なるOS上のPostgreSQLインスタンス間でのレプリケーション、解析用データベースへのデータの集約、アップグレード時のダウンタイム軽減など)、制約事項などについて議論を行いました。論理レプリケーションは開発者の間で注目され、私たちのチームも積極的に改善に取り組んできました。しかし、システム構築の難易度の高さや制限事項の多さにはまだ課題があります。今後も本機能の開発を続けると同時にその魅力を伝え、一般ユーザーへの更なる普及を図っていきたいと思います。
おわりに
今回が私の初めてのPGConへの参加でしたが、開発者や一般ユーザーがどのようなことに注目しているのかを直接感じることができ、大変有意義な時間となりました。また、普段は出会うことのないメジャーコントリビューターや海外の同僚と話すことができたのも大きな収穫でした。今後もPGconに継続的に参加し、PostgreSQLコミュニティの発展に寄与してきたいと思います。
関連リンク
PGcon 2023での講演内容やアンカンファレンスでの議論内容は、以下をご覧ください。
- Logical Replication – handling of large transactions:黒田講演(PGCon 2023オフィシャルのページへ)
- PostgreSQL 16 and beyond:Amit Kapila講演(PGCon 2023オフィシャルのページへ)
- Logical replication of DDLs:Peter Smith講演(PGCon 2023オフィシャルのページへ)
- The journey towards active-active replication in PostgreSQL:Amit Kapila講演(PGCon 2023オフィシャルのページへ)
- アンカンファレンスセッション(PGCon 2023オフィシャルのページへ)
2023年7月14日公開
富士通のソフトウェア公式チャンネル(YouTube)
-
- 富士通のミドルウェア製品のご紹介や各種イベント・セミナーの講演内容、デモンストレーションなどの動画をご覧いただけます。
- 富士通のミドルウェア製品のご紹介や各種イベント・セミナーの講演内容、デモンストレーションなどの動画をご覧いただけます。
PostgreSQLについてより深く知る
PostgreSQLに興味をお持ちのお客様はこちらのコンテンツもお勧めです。ぜひご覧ください。
本コンテンツに関するお問い合わせ
お電話でのお問い合わせ
-
富士通コンタクトライン(総合窓口)
0120-933-200受付時間:9時~12時および13時~17時30分(土曜日・日曜日・祝日・当社指定の休業日を除く)