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からは、パブリッシャー上で実行中のトランザクションの転送が可能になりました。詳しい改善内容については、以下のブログで解説しています。

しかし、その受信と適用は依然としてパブリッシャー上でのコミット後であり、適用遅延を防ぐには十分とは言えませんでした。

PostgreSQL 14での大規模トランザクションに関する改善(講演資料より)
図3:PostgreSQL 14での大規模トランザクションに関する改善(講演資料より)


講演の後半では、PostgreSQL 16の主要な新機能「Parallel apply」を紹介しました。この新機能は大規模トランザクションの処理を高速化し、論理レプリケーションの適用遅延問題を解決することを目指しています。

Parallel applyのアーキテクチャーは図4のとおりです。

Parallel applyのアークテクチャー(講演資料より)
図4:Parallel applyのアーキテクチャー(講演資料より)

本機能では、新たなバックグラウンドワーカとして「並列適用ワーカ」を導入しています。このワーカは大規模トランザクションの一部を受信した際に起動され、変更差分の適用を行います。既存の適用ワーカは受信内容を並列適用ワーカに引き渡し、新たに生まれた並列適用ワーカは受け取った内容をすぐにデータベースに適用します。ただし、実際に変更内容がコミットされるのはパブリッシャー上でのコミット後であり、未コミットのデータが反映されることやトランザクションの順序が変わることはありません。この新しいワーカにより、サブスクライバーは受信した大規模トランザクションを即座に適用できるため、図5に示すように適用遅延を最大40%程度削減することが可能です。

Parallel applyによる性能改善(講演資料より)
図5:Parallel applyによる性能改善(講演資料より)

講演の後、いくつかの質問を受け、論理レプリケーションのアーキテクチャー、一般的な利用シーン(異なるOS上のPostgreSQLインスタンス間でのレプリケーション、解析用データベースへのデータの集約、アップグレード時のダウンタイム軽減など)、制約事項などについて議論を行いました。論理レプリケーションは開発者の間で注目され、私たちのチームも積極的に改善に取り組んできました。しかし、システム構築の難易度の高さや制限事項の多さにはまだ課題があります。今後も本機能の開発を続けると同時にその魅力を伝え、一般ユーザーへの更なる普及を図っていきたいと思います。

おわりに

今回が私の初めてのPGConへの参加でしたが、開発者や一般ユーザーがどのようなことに注目しているのかを直接感じることができ、大変有意義な時間となりました。また、普段は出会うことのないメジャーコントリビューターや海外の同僚と話すことができたのも大きな収穫でした。今後もPGconに継続的に参加し、PostgreSQLコミュニティの発展に寄与してきたいと思います。

関連リンク

PGcon 2023での講演内容やアンカンファレンスでの議論内容は、以下をご覧ください。

2023年7月14日公開

オンデマンド(動画)セミナー

    • PostgreSQLに関連するセミナー動画を公開中。いつでもセミナーをご覧いただけます。
      • 【事例解説】運送業務改革をもたらす次世代の運送業界向けDXプラットフォームの構築
      • ハイブリッドクラウドに最適なOSSベースのデータベースご紹介

本コンテンツに関するお問い合わせ

お電話でのお問い合わせ

Webでのお問い合わせ

当社はセキュリティ保護の観点からSSL技術を使用しております。

ページの先頭へ