2012-01-19 6 views
0

私のアプリケーションは、Tomcatを使用して、Windows Server 2008でSQL Server 2008を実行します。マイクラウドベースのサーバがシングルコアからデュアルコアにアップグレードした後、50%遅くなるSQL Serverのクエリを実行します

は、私は私のクエリの

一つは、アプリケーションから実行するように、正確に48秒かかり、クラウドベースのサーバを使用しています。これは、データベースから425レコードを引き出します。

私は時間の長さによって驚きませんでした。

Oracleでの同様のクエリは6秒で実行されましたが、Oracleのセットアップには2GBのメモリと4倍のプロセッサが搭載されていましたが、SQL Serverは1GBのメモリと1台の2.66GHzプロセッサでした。

したがって、私はサーバーの仕様を2GBに増やしました。変更はありませんでした。

私はその後、シングルプロセッサからデュアルプロセッサに私のサーバーの仕様を増加させました。 質問に時間がかかりました。ちょうど70秒です。

私はP/SQLからT/SQLへのクエリの変換は非常に非効率的な方法で行われている可能性があることを認識しています。そして、OracleとSQL Serverの間には速度の違いがあるかもしれません。 しかし私の主な質問は本当に、同じクエリが今やデュアルコアシステムでシングルコアよりも遅く動作するのはなぜですか?

ありがとうございました!

答えて

0

ハイパーバイザーのスケジューラーが同時にスケジューリング可能な2つのCPUを見つけようとしているため、デュアル仮想CPUは、使用されるハイパーバイザーとサーバーの合計負荷によって、(かなり)CPU時間がかかります。クエリがシングルスレッドの場合、2番目のCPUの利点はゼロですが、CPU時間が短くなれば処理速度が遅くなります。

正反対の方向は、別の可能性である:あなたのクエリがマルチスレッド化されており、ストレージが遅い場合には、2つのスレッドは、ストレージのスループットを低下させるランダムIOの嵐を作成することができます。

+0

私の友人は、ハードウェアを変更した後、SQLサーバーのプロパティを変更するために私に提案し – gordon613

+0

どうもありがとうございました。管理スタジオから、サーバー名を右クリックし、プロパティを選択します。私はまだこれを試していない。 – gordon613

関連する問題