PostgreSQL 9.2の新機能
PostgreSQL 9.2でいくつも予定されている新機能のうち、最も重要なものとしては以下の4つが挙げられる。
・スケーラビリティ向上
・Index-Only Scan
・消費電力の低減
・新しいバックアップ/レプリケーションのオプション
まずスケーラビリティ向上について。これは現在のマルチコアCPUの台頭にあわせた機能強化といえる。「論理的に言えば、利用できるCPU(コア数)が増えれば1秒あたりで処理できるのトランザクションはリニアに増えるはず」とHaas氏。実はPostgreSQL 9.1まではロックコンテンションが原因で、コンフリクトが多く発生するという問題を抱えており、8コアまでしかスケールしなかった。「場合によっては8コア以下でも一部のワークロードが限定されることが多かった」(Haas氏)
PostgreSQL 9.2ではこの問題が大きく改善され、書き込みでも15%以上の性能向上を実現、読み込みでは32コアまではリニアに伸ばしていけることが確認できている。もっとも"32コアまで"としているのは「僕のテスト環境では32コアまでしか試せなかったから。もし誰かが64コアのマシンを提供してくれたら、正式リリースまでに64コア対応できるかも(笑)」(Haas氏)とのこと。
ロックコンテンションは9.1では大きなボトルネックだったとHaas氏。9.2ではメインのロック管理をバイパスする"Fast path"ロックを取り入れている。これはバーチャルトランザクションロックと"weak"リレーションロックはめったにコンフリクトを起こさないことを利用している。
また、スナップショットの取得に時間がかかっていた問題については、キャッシュラインのパスを減らしてクリティカルパスの時間を短くすることで対応している。WAL(Write Ahead Log)まわりでも改善が見られており、WALフラッシュのパフォーマンスが秒間トランザクションで5‐10倍の高速化を実現しているほか、9.1では一度しかできなかったWALのインサーションが、9.2では複数のバックエンドが並行してWALストリームにインサーションできる機能が追加される予定だという(現在開発中とのこと)。