2

Microsoft SQL Server 2008 インスタンスと Oracle 10g データベースを同じリモート サーバーに並べてインストールし、それぞれにまったく同じデータをロードしています。

約 10,000 件のレコードを返す簡単なクエリの時間を計測するプログラムを作成しました (SELECT * FROM TABLE WHERE X=X)。このテストでわかったことは、Oracle が MSSQL よりも 4 倍から 12 倍遅いことです。ODP.NET4、ODP.NET2を使用して、VPNを介してリモートでLAN接続でテストし、32ビットオペレーティングシステムに適切な32ビットバージョンがインストールされていることを確認しました.64ビットでも同じです。

Oracle は常に SQL Server インスタンスより何倍も遅いという点で、私の結果は常に同じです。

また、SQL Developer 内で同じクエリを試してみましたが、このツールは同じレコードセットをはるかに高速に取得します。ツールにすべてのレコードを強制的に取得させると、SQL Server よりも約 20% 遅くなりますが、少なくとも私のシナリオでは許容範囲内です。

どんな助けでも大歓迎です。同様の質問がいくつかあることは知っていますが、これらの回答は問題の解決には役立ちませんでした。

ありがとう

  • データベース サーバーから: 3 秒 (Oracle) 対 0.6 秒 (SQL Server)
  • LAN のどこかから: 22 秒 (Oracle) と 4 秒 (SQL Server)
  • リモート マシンから VPN 経由: 54 秒 (Oracle) vs 21 秒 (SQL Developer) vs 13 秒 (SQL Server)

追加の質問: これは、ODP.NET + SQL Server 準拠のアプリケーションで発生したパフォーマンス ヒットですか? それとも、何か問題があると想定するのは正しいですか?

4

1 に答える 1

3

アプリケーションでフェッチ サイズを設定していますか? もしそうなら、異なるフェッチ サイズを設定して、それが経過時間にどのように影響するかを測定してみましたか? SQL Developer はデフォルトで 500 のフェッチ サイズに設定されていると思います (ただし、ストレッチの保証はありません) ので、それを出発点として使用できます。

于 2012-11-14T21:47:07.590 に答える