SQLの解析結果を保持する仕組みの違い

SQLの解析結果を保持する仕組みの違い

PostgreSQLもOracle Databaseも、SQLに指定されている表や列などがデータベースに存在しているかどうか、アクセスするデータが物理ファイルのどの位置に格納されているのかを確認するという解析処理を実施し、SQLを実行しています。

Oracle DatabaseではSQLの解析結果は共有プールというメモリ上に保管され、共有利用することができます。同じSQLが共有プール上に既に存在している場合、SQLの解析を行う必要はありません。これは、同時に多数のユーザーがOracle Databaseにアクセスした場合に、SQLの解析による性能低下を防ぐ仕組みとして実装されているからです。

一方、PostgreSQLではSQLの構文解析結果を共有する機構は存在しないため、毎回SQLの解析を行うという実装になっています。

読み取り一貫性と同時実行性の仕組み(ロールバックセグメント/追記型構造)の違い

RDBMSにおいて、読み取り一貫性と同時実行性の両立は非常に重要な課題です。読み取り一貫性を保証するため変更処理で表ロックを取得してしまうと同時実行性は低くなりますし、同時実行性を優先して一貫性のないデータを出力しては本末転倒です。

PostgreSQLやOracle Databaseでは読み取り一貫性と同時実行性の両方を実現できる設計となっていますが、実装方法は大きく異なります。

Oracle Databaseでは、DML(INSERT/UPDATE/DELETE)を行って変更する前の情報はロールバックセグメントという領域に保存する仕組みとなっています。あるセッションの変更がコミットされていない時に、ほかのセッションが同じ情報に参照すると、ロールバックセグメントに保存された変更前の情報を使って、参照時に確定されている情報だけを参照することができます。

また、ロールバックセグメントは循環方式で変更前の情報を保存する仕組みのため、変更前の情報を効率よく保存し、読み取り一貫性を実現しています。以前はロールバックセグメントのチューニングは非常に難しいものでしたが、Oracle9iより実装された自動管理UNDO表領域によってチューニングの手間が低減されています。

一方、PostgreSQLではロールバックセグメントのように、変更前の情報を専門に保存する仕組みがありません。PostgreSQLの表データは追記型であるため、更新、削除の場合でも以前の行データは削除されず、ロールバックに必要な情報として残されています。そのため、あるセッションの変更がコミットされていない時に、ほかのセッションが同じ情報に参照すると、以前の行データを参照することで、読み取り一貫性を保証しています。

この実装方法は非常にシンプルですが、追記型であるため表の領域が拡張してしまいます。このため、定期的に不要になったデータを削除するVACUUM処理を行う必要があります。

表が拡張しやすい仕組みと、VACUUM処理の負荷は、8.3で導入されたHOT機構によって大きく改善されています。8.3以降であれば、AUTOVACUUMに処理を任せても高いレベルの性能維持が可能です。

最後に

以上のように、同じRDBMSでありながらPostgreSQLとOracle Databaseにはそれぞれの特徴があり、実装時には特徴を理解しながら活用していくことが必要です。

まだまだ興味深いトピックが多々ありますが、残念ながら紙面の関係上、すべてを記載することができませんでした。両RDBMSの使い方について機会があればまたご説明したいと思います。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30