Oracleとの比較

Oracleとの比較

OracleとPostgreSQL(VACUUM未実行)
図3:OracleとPostgreSQL(VACUUM未実行)
 

   上記は同じテストを行った場合のOracleの結果とVACUUMを実行しなかった(3回目、4回目の間ではデータ更新も発生しないので、同じ条件でしかありません)場合のPostgreSQLを比べてみたものです。

   PostgreSQL単独で見た場合、図1の結果と比べると、VACUUMが実行されないために、3回目と4回目ではデータファイルのサイズに違いはなく、レスポンスタイムもほとんど同じ結果となりました。

   一方のOracleの場合、表は個別のデータファイルと対応しないため、社員表を構成するエクステント全体の総ブロック数からそのサイズをだしてい ます。この値は複数回の50万件更新後でも、まったく変わりはありませんでした。レスポンスタイムも悪化は見られずほぼ一定の結果でした。

   Oracleは「該当行を直接書き換える」ので表データ全体のサイズが変わらず、データ数やその位置にも変化がないため、検索時間にも影響がでません。

※注: updateする列「その他」は可変長文字列であり、その列長を大きく増やした場合は行サイズ が大きくなり、結果として使用ブロック数が増加したり、位置が変わる場合があり得ます。このテストでは列長はほとんど変えずにテストを行っています。また HWM(High Water Mark)以後の未使用ブロックも計算に含まれています。

ベンチマーク総論

   数回に渡ってOracleとPostgreSQLを使いベンチマークテストを行ってきましたが、どちらにも得手不得手がある事がご理解いただけたでしょうか?

   登録・削除はPostgreSQL、検索・更新についてはOracleの方に分がありそうです。ただし、繰り返しになりますが結果の数値だけを単純に見るのではなく、「それらの差が何処から生まれてくる物であるのか」という事を知るための情報の1つと考えて下さい。

   このテストの主たる目的は構造の違いから発生するパフォーマンス上の影響を確認するという意味合いが強く、純粋にパフォーマンスの善し悪しを判断するためのものではない事もまたご理解いただけるかと思います。

   ポイントとなるのは、以下の通りです。

  • PostgreSQLが追記型である点
     
  • OracleのREDO、UNDOの構造の複雑さ
     
  • PostgreSQLのVACUUM
     
  • インデックス作成列の選別

   それぞれの良い点悪い点がどういった理由に起因するかがある程度思い描ければ、実システムの構築でも考慮すべき点に気付く事ができ、要件のプライオリティやバランスの中でDBの選定に役立てる助けになる物と考えます。

人気記事トップ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