PostgreSQL 18正式リリース。非同期I/Oによる最大3倍の性能向上、UUID v7対応など
オープンソースのリレーショナルデータベース「PostgreSQL 18」正式版のリリースが発表されました(日本語版のプレスリリース)。
PostgreSQLはITエンジニアのコミュニティであるStackoverflowの調査で2023年にMySQLを抜いて以来、3年連続でITエンジニアに最も人気のあるデータベースとなっています。
非同期I/O処理の採用による性能向上
PostgreSQL 18で最も注目すべき点は、非同期I/Oの導入による大幅な性能向上でしょう。
これまでのPostgreSQLでは同期I/O処理を採用していました。これは例えばOSにファイルリードのようなI/O処理を依頼すると、処理が終了して結果が返ってくるまで、すべてのPostgreSQLの内部処理が一時停止することを意味します。
同期I/O処理の利点は実装が比較的シンプルで容易であり、バグが発生しにくい点にありますが、ひとつひとつのI/O処理が完了するまで次の処理が実行されずに待ち時間が発生するため、全体として処理速度が遅くなる点がデメリットとなります。
一方、非同期I/OはI/O処理と別の処理、あるいは複数のI/O処理を同時に実行できるため、全体の性能向上が実現します。ただし非同期処理を考慮した複雑なプログラミングが要求されます。
PostgreSQL 18ではこの非同期I/O処理をシーケンシャルスキャン、ビットマップヒープスキャン、バキューム処理におけるリード時に採用。ベンチマークの結果、これらの処理で最大3倍の性能向上が確認されているとのことです。
PostgreSQLにおける非同期処理の範囲はさらに拡大される見通しで、今後も性能向上も期待できるでしょう。
UUID v7をサポート
PostgreSQL 18では、UUID v7を生成するuuidv7()関数が新たに追加されました。
UUIDは事実上重複のない一意のIDとして使える128ビット長の値です。データベースにおいても各データに対して重複しないIDを設定する場合などに用いられます。
UUID v7はIDの先頭部分にミリ秒単位のタイムスタンプが格納されるため、生成順序が維持されつつ一意なIDとなることが特徴です。
これにより一意なIDを与えつつも時系列でソート可能となること、生成順にIDが隣接するためにインデックス作成時などにデータベース内部で同一または近接された領域に格納されI/O処理の面で有利となるというメリットがあるとされています。
仮想性整列、OAuth 2.0による認証など
その他、PostgreSQL 18では値を保存する代わりにクエリ時に計算する仮想生成列、OAuth 2.0による認証機能、そして統計情報を保持することにより性能劣化を引き起こさないバージョンアップに対応するなど、多くの新機能が追加されています。
詳細は「PostgreSQL: PostgreSQL 18 がリリースされました!」をご覧ください。