次期PostgreSQL 18では非同期I/Oの採用により性能が2~3倍向上する見通し

2025年6月9日

PostgreSQL開発チームは先月(2025年5月)にリリースした「PostgreSQL 18 Beta 1」で非同期I/O処理を実装したことを明らかにしましています

同チームのテストによると、シーケンシャルスキャンやビットマップヒープスキャン、バキュームといった処理において2~3倍の性能向上が見られたとのことです。

同期処理はシンプルだが待ち時間が発生する

これまでのPostgreSQLは同期I/O処理を採用していました。これは例えばOSにファイルリードのようなI/O処理を依頼すると、処理が終了して結果が返ってくるまで、すべてのPostgreSQLの内部処理が一時停止することを意味します。

同期I/O処理の利点はすべてのI/O処理が同期的に行われるため、実装が比較的シンプルで容易だというメリットがあります。これはバグを引き起こしにくいとも言えます。

一方で、ひとつひとつのI/O処理が完了するまで待ち時間が発生するため、全体として処理速度が遅くなる、というデメリットが存在します。

Linuxでは非同期用システムコールにも対応

PostgreSQL 18 Beta 1では非同期I/Oサブシステムの実装により、複数のI/O処理の並列処理や、I/O処理が完了しなくとも別の処理を実行できるようにすることで、PostgreSQLが対応するすべてのプラットフォームでI/O処理のスループットやレイテンシを改善しています(現時点ではリード処理の改善のみのようです)。

さらにLinuxでは非同期I/O処理のためのシステムコールである「io_uring」にも対応していると説明されています。

これによりPostgreSQL 18 Beta 1でのテストで、シーケンシャルスキャンやビットマップヒープスキャン、バキュームといった処理において2~3倍の性能向上が見られたと報告されています。

他にも、複数カラムのBツリーインデックスを用いた複雑な条件検索やORやINを含むWhere節を持つクエリにおけるインデックス利用の改善、またジョインにおける実行計画の改善などによる性能向上も行われていると説明されています。

PostgreSQLは例年9月か10月にメジャーバージョンアップが行われているため、PostgreSQLも今年(2025年)9月か10月に正式版の登場が期待されます。

PostgreSQL RDB データベース

関連記事: