- PR -

SQLServer2005のパフォーマンスが悪い事象に悩まされています

投稿者投稿内容
tat
会議室デビュー日: 2008/07/28
投稿数: 6
投稿日時: 2008-07-28 17:46
SQLServer2005とASP.NETでWebアプリケーションを運用しています。

本番環境のレスポンスの悪さに頭を悩ませています。
ハードウェアのスペックは本番環境の方があきらかに高いのですが、
応答速度が本番環境の方が遅いのです。


SQLプロファイラーで見たところ以下のようなデータが取れました。


【本番環境】
EventClass TextData CPU Reads Writes Duration SPID StartTime EndTime
Audit Login 64 14:19:13.653
RPC:Completed exec sp_executesql 406 8507 0 403 64 14:19:13.653 14:19:14.060
Audit Logout 406 81682 0 423 64 14:19:13.653 14:19:14.077
RPC:Completed exec sp_reset_connection 0 0 0 0 64 14:19:14.077 14:19:14.077

【開発環境】
EventClass TextData CPU Reads Writes Duration SPID StartTime EndTime
Audit Login 54 14:05:54.840
RPC:Completed exec sp_executesql 251 8052 0 131 54 14:05:54.840 14:05:54.980
Audit Logout 251 1810525 1 156 54 14:05:54.840 14:05:54.997
RPC:Completed exec sp_reset_connection 0 0 0 0 54 14:05:54.997 14:05:54.997


上記のSQLProfilerの結果は
Webの画面を表示するのに、SQLを何百回と実行する処理があり、
その中から1つのSQLを実行したものを抜き出したものです。
本番は0.4秒、開発は0.1秒かかります。

一つ一つの差は小さいですが、何百回と実行するため
結果的に画面の応答が遅いという事象に悩まされています。
(検証はテーブルのデータ量を同じに、ユーザは自分だけしかいない状況で行いました)


SQLサーバの処理時間に開きがあるのはわかったのですが、
差が出る要因がわかりません。
どなたか原因となるものに検討がつく方いらっしゃいませんでしょうか?




【構成】

DBサーバ:SQLserver2005
WEBサーバ:IIS6.0+ASP.NET(.net2.0)

本番DBサーバはMSCS(MicroSoft Cluster Service)を使ってクラスタ構成にしています。

ハードウエアスペックは省略しますが、HDBENCH Ver 3.30でベンチマークをとった結果
CPU、メモリ、ディスク共に本番環境の方が上回っています。

tat
会議室デビュー日: 2008/07/28
投稿数: 6
投稿日時: 2008-07-28 17:54
すいません、プロファイラの結果が崩れてしまったので、その部分だけ再投稿します。

コード:
【本番環境】
EventClass    TextData                 CPU Reads   Writes  Duration SPID StartTime     EndTime
Audit Login                                                         64   14:19:13.653
RPC:Completed exec sp_executesql       406 8507    0       403      64   14:19:13.653  14:19:14.060
Audit Logout                           406 81682   0       423      64   14:19:13.653  14:19:14.077
RPC:Completed exec sp_reset_connection 0   0       0       0        64   14:19:14.077  14:19:14.077

【開発環境】
EventClass    TextData                 CPU Reads   Writes  Duration SPID StartTime     EndTime
Audit Login                                                         54   14:05:54.840
RPC:Completed exec sp_executesql       251 8052    0       131      54   14:05:54.840  14:05:54.980
Audit Logout                           251 1810525 1       156      54   14:05:54.840  14:05:54.997
RPC:Completed exec sp_reset_connection 0   0       0       0        54   14:05:54.997  14:05:54.997




さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2008-07-28 18:11
さかもとと申します。

>>本番DBサーバはMSCS(MicroSoft Cluster Service)を使ってクラスタ構成にしています。


開発DBも全く同じクラスタ構成ですか?
_________________
------------------------------------------
拝啓、さかもとと申します♪
よっしー
大ベテラン
会議室デビュー日: 2007/05/17
投稿数: 143
投稿日時: 2008-07-28 22:54
回答じゃないのですが。

引用:

tatさんの書き込み (2008-07-28 17:46) より:
Webの画面を表示するのに、SQLを何百回と実行する処理があり、



これは直さないの?
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2008-07-28 23:09
Execution plan が違っていないか確認しましたか?

それから、performance 問題の多くは blocking が原因ですから、blocking について調査しましょう。

SQL Server 2005 および SQL Server 2000 のブロッキングを監視する方法

SQL Server 2005 でのパフォーマンス問題のトラブルシューティング

SQL Server 2005 パフォーマンスチューニング

SQL Server のパフォーマンスの問題のトラブルシューティングを行う方法

インサイドMicrosoft SQL Server 2005 クエリチューニング&最適化編
tat
会議室デビュー日: 2008/07/28
投稿数: 6
投稿日時: 2008-07-29 09:10
引用:


開発DBも全く同じクラスタ構成ですか?




いいえ、開発DBはクラスタ構成にしていません。
tat
会議室デビュー日: 2008/07/28
投稿数: 6
投稿日時: 2008-07-29 09:16
引用:

よっしーさんの書き込み (2008-07-28 22:54) より:

引用:

tatさんの書き込み (2008-07-28 17:46) より:
Webの画面を表示するのに、SQLを何百回と実行する処理があり、



これは直さないの?



そこは別働隊が対応しています。
それはそれとして、速度の差を解明しないと上の人が納得してくれないので、
調査をしている次第です。



引用:

ちゃっぴさんの書き込み (2008-07-28 23:09) より:
Execution plan が違っていないか確認しましたか?

それから、performance 問題の多くは blocking が原因ですから、blocking について調査しましょう。




ありがとうございます。
調べてみます。



[ メッセージ編集済み 編集者: tat 編集日時 2008-07-29 09:55 ]
よっしー
大ベテラン
会議室デビュー日: 2007/05/17
投稿数: 143
投稿日時: 2008-07-29 11:15
引用:

tatさんの書き込み (2008-07-29 09:16) より:
そこは別働隊が対応しています。
それはそれとして、速度の差を解明しないと上の人が納得してくれないので、
調査をしている次第です。


了解です。

スペックが高いことによって返って遅くなる事象として、こんなのもあります。
64bit環境でメモリが16GB以上のケースのみで起きるようです。
http://support.microsoft.com/kb/917035/en-us
SPも影響するようですし、このあたりも記載した方が良いですよ。
ちなみに本番DBと開発DBは同じSPですか?

スキルアップ/キャリアアップ(JOB@IT)