2008年のSQLサーバーで処理負荷が高い問題について

このQ&Aのポイント
  • 本番環境で使用しているSQLサーバー2008において、処理負荷が非常に高くなる問題が発生しています。
  • クライアント1台しか接続していない状態でも処理が遅く、ノートPCよりも3倍ほど時間がかかるようになっています。
  • 本番環境のSQLサーバー2008では、一部の複雑な条件抽出処理により停止することがあります。
回答を見る
  • ベストアンサー

2005で動くのに2008では処理負荷が高い

ドットネットで作成されたアプリケーションを SQLサーバーを用いてクラサバ形式で業務を行います。 本番実施前に、ノートPCにSQLサーバー2005エクスプレスを入れて テスト環境として1台のみで使用していた際は問題ありませんでした。 本番では、WIN2008サーバーにSQLサーバー2008を入れて使用したのですが、 サーバーに対して、クライアント1台しか接続していない状態でも処理負荷が高く、 動作が非常に遅くなり、ノートPCよりレスポンスが3倍ほどかかるようになりました。 データ件数は同じ状態です。(15万件ほど) 一部のやや複雑な条件抽出処理では、本番サーバー環境側は処理が停止してしまいます。 (ノートPCではやや時間がかかるもののきちんと結果が戻ってきますが、  本番側は数時間待っても結果が戻らず停止と同じ状態です) 本番サーバーの状況として、メモリ、ネットワークは殆ど使用しておらず、 CPUのみ25%を占有し続けている状態で、処理負荷がかかっているようです。 当然ながらノートPCのCPUよるは遥かに高性能です。 本番環境のSQLサーバ2008で初期データを作成する際、 2005エクスプレスで作成した初期データ(MDFファイル)を 2008側でアタッチしただけです。 テスト環境のノートPCの方が性能が良く、 高額な本番環境のサーバーが使いものにならない状態です。 直すべき点等があればご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • norayuni
  • ベストアンサー率79% (27/34)
回答No.1

書かれている内容から問題の原因を特定するのは難しいです。 評価環境  ノートPCを使用  OS不明(32bitか64bitか不明)  SQL Server 2005 Express  この環境でも、クラサバ?  (DBサーバのノートPCに、別のPCに乗ってるアプリからアクセス?) 本番環境  サーバー機(コア何個?)  Windows Server 2008(32bitか64bitか不明。Windows Updateかけて最新?)  SQL Server 2008 パフォーマンス値  メモリ、ネットワークは殆ど使用していない  CPUも25%程度(この25%は何を見て、25%と判断?) ってな状況ですと、物理I/Oはどうなのか気になります。 また、「ノートPCよりレスポンスが3倍ほどかかるようになりました」では、 1秒が3秒になったのか、 10秒が30秒になったのか、 2分が6分になったのかでも話が変わってきます。 が、まずはインデックスの再構築、統計情報の更新などを試されるといいかと思います。 参考情報として、URLを一つ載せておきます。

参考URL:
http://technet.microsoft.com/ja-jp/library/ms177500.aspx
kirstin_chiella
質問者

補足

すいません、詳細は以下の通りです。 評価環境  ノートPCを使用 CPU2コア  OS VISA SP1 (32ビット)  SQL Server 2005 Express  SQLサーバーとアプリケーションが1台のPCにはいっています 本番環境  CPU4コア  Windows Server 2008(32bitでSP等は最新状態)  SQL Server 2008 パフォーマンス値  WIN2008のパフォーマンス状況やSQLサーバManagementStudioの  パフォーマンスを見る限り、メモリ、ネットワークは殆ど使用しておらず、  CPUも25%程度の利用状況。(2台のクライアントから同時接続すると  50%程度まであがります。)  SQLサーバーのCPUとメモリの割り当ては自動にしています。  物理I/Oは時々3M程度になるくらいで待ち状態のプロセスはありません。 「ノートPCよりレスポンスが3倍ほどかかるようになりました」  これは大体の感覚です。  評価環境だと1分程度でおわっていたものが、3分ぐらい。  評価環境で1秒で終わったのがやはり3秒程度かかります。 インデックス再構築、統計情報の更新も行いましたが、改善はありませんでした。 トレンドマイクロのサービスを停止したり、ファイアヲールを無効にしましたが、 やはり効果はありませんでした。 です。

関連するQ&A

  • 処理時間について

    今、仕事で既存の処理のレスポンス調査をしているのですが、 行き詰ってしまったので質問させていただきます。 本番環境とテスト環境で全く同じ処理を実行した所、テスト環境では 1分程度で処理が正常終了するのに本番環境だと 2時間経過しても処理が終わらず、なぜ同じ処理なのに本番環境と テスト環境で処理時間に違いがありすぎるのか分からず困っています。 処理としては25万件程あるデータ(テキストベース)を PL/SQLで読み込みTable_AにInsert または キーが同じデータが 存在しているならUpdateをし、 それと同時にトリガーで更新前と更新後の値を Log_TableにInsertします。 検証したときの手順としては、 (1)Table_AとLog_TableをCreate (2)トリガーのコンパイル (3)Table_Aのインデックスの作成 (4)PL/SQLのコンパイル (5)Table_AとLog_Tableの統計情報の取得 となっております。 ちなみに、テスト環境と本番環境の両方について、 実行されたSQLの実行計画を取得し比較したのですが、 同じ実行計画になっていました。 また、統計情報を取らずに処理を実行した場合は、テスト環境でも 2時間経過しても処理が終わりませんでした。

  • SQL実行時の負荷、処理時間確認

    oracle 10g Release 10.2.0.2.0を使用しています。 SQLにてDELETE文実行時のサーバ負荷、処理時間を確認したく、 次のSQLを実行しましたが、「V$SQLが無い」と怒られました。 SELECT * FROM V$SQL; oracleのバージョンを確認するSQL(select * from v$version;)は 問題なく実行できます。 V$SQLが使用できない理由、もしくは別の方法で処理負荷、処理時間を 確認できる方法とうあれば教えていただきたいです。 宜しくお願いします。

  • SQLServerの負荷

    皆さん初めまして。 SQL Serverのことで少々困ったことが起きてまして、DB素人の私では良く分からずこちらに投稿させて頂きます。 現在、あるアプリケーションにて1分間に1回データを取得しSQL Serverにデータを渡して溜め込んでいくというシステムを動かしています。 毎分のデータはインターネットVPN経由で4ヶ所からデータを取得し、SQL Serverに渡して書き込むといった動きです。受け取るデータと言うのは、 int,int,datetime,datetime,int,numeric×150個 という様な構造をしています。このようなデータセットが4セットあり、これを毎分DBに書き込んでいます。当初は1セットのみだったのですが、途中で3セット増えて4セットになったのです。 困ったことと言うのは、4セットに増えて数週間してからSQL Serverと同居している他のアプリケーション(データを取得するアプリ)に影響が出始め、1分毎にデータを書き込む際、サーバの負荷が60%を超過し始めるようになったのです。タスクマネージャで確認したところ、負荷の原因はSQLサーバでした。 サーバスペックは以下の通り ・CPU:Pen4 3GHz ・Mem:2GB ・HDD:SCSI U320 32GB×3(RAID5) ・N/W:10/100/1000BASE-T×2 知りたいことと言うのは、SQLサーバの負荷が何が原因で発生していて、何とか下げることが出来ないかという相談です。 DBは私の専門外なので質問の仕方がまずい部分もあるかもしれません。足りない部分があれば、公開できる範囲で対応いたします。 皆様よろしくお知恵をお貸しください。

  • SQL SERVERバックアップ・インポート

    本番環境のSQL SERVERのデータを開発環境のSQL SERVERへ SQL SERVER ManagementStudioのインポート・エクスポートウィザードを使い移動させているのですが、自動化出来ないかと考えております。 【本番環境】 WindowsServer2008R2(32bit) SQL SERVER 2008R2 【開発環境】 WindowsServer2008R2(64Bit) SQL SERVER 2008R2 EX ◎現在の作業手順 1.開発環境上のテーブルを一括削除 2.開発環境側のSQL MAGAGEMENT STUDIOのインポートおよびエクスポートウィザードにて、本番環境のテーブルを一括インポート 問題は、テーブルが50以上あり、内100万行以上のテーブルが複数ありますので、移行中に本番環境の動きが悪くなることです。 そのため、業務終了後にバッチでデータ移行ができればと考えております。 ※なお、本番環境については閲覧権限しかないため、本番環境にストアドを作成するには ベンダーへ依頼する必要があるので、できれば避けたいと考えております。 上記の件について、アドバイスを頂けましたら幸いです。

  • caclsコマンド実行時のサーバ負荷

    Windows server2012でCaclsコマンドを 実行する場合、サーバにどれだけ負荷が かかるか調べたいのですが。 本番環境のサーバなのですが、 高負荷がかからないといいたいのですが どなたかご存知であれば、教えてもらえませんか。

  • キャッシュとサーバ負荷について

    今までキャッシュを読み込む処理は、ブラウザの表示速度が上がる・サーバの負荷が軽減されると思っていました。 けれど最近「キャッシュを読み込むにしろ読み込まないにしろ、オンライン状態の場合一度サーバにデータの更新日時を問い合わせてキャッシュのデータよりも新しいデータがサーバにアップされていないかどうかを確認するので、サーバの負荷には関係ない」という文書を目にして、少々混乱気味です。 結局どちらの情報が正しいのでしょうか? また、クライアントのアクセス回数が非常に多く、ブラウザの表示が数秒間真っ白になる状態が起こるシステムなのでなるべくサーバの負荷を減らしたいと思っています。 キャッシュが関係なく、システム自体に問題が無いとすればこれ以上サーバの負荷は減らしようがないのでしょうか? 何だか漠然とした書き方ですが、御存知の方、回答お願いします。

  • JavaScriptの負荷について

    JavaScriptはクライアント側のパソコンに負荷がかかるだけで、サーバ側にはかからないものなのですか? perlやCGIはサーバに負担がかかるので、表示が遅くなったりしますが、Javascriptの場合は、クライアントのマシン性能次第という理解で間違いないでしょうか? そうなると、バリバリJavascriptを使ってきれいなサイトを作りたいと思うのですが。。。 誰か教えてください。よろしくお願いします。

  • SQL Server 2005 EXPRESS Developer E

    SQL Server 2005 EXPRESS Developer Editionの機能について 現在、開発用パソコンと本番サーバー用パソコン間で、データのインポート・エクスポートの為だけにDeveloper Edition を使っています。 Developer Editionは開発・テスト用途と言う事ですが、本番環境との違いとは何ですか? 本番環境で使うと、どういった制限が有るのですか? ご存知の方、よろしくお願いします。

  • サーバー負荷について教えてください

    現在、ファイルサーバー(Pen4,RAM1G)に10台程度のクライアントパソコンが接続している環境です。モノクロプリンターのプリントサーバーを兼用しているのですが、これによるサーバー負荷は無視できるものなのでしょうか? それと、サーバー側にもNortonのUntiVirusが入っており、ファイルのリアルタイム保護がONになっているのですが、クライアント側でONになっていれば、サーバー側をOFFにして問題あるのでしょうか?また、これのサーバー負荷はいかほどのものでしょうか?

  • Recordsetの処理時間について

    現在VC++を用いてSQL Server Express 2005のデータベースに対してSQL文を実行しています。 そこで、下記のような現象が発生し、解決できずに困っています。 [現象] 複数のデータベースが存在する(約300)環境に対して、masterデータベースに接続し、個々のデータベースに対してデータベース名を明示的に記述したSQLを実行。 データベース接続したデータベースと異なるデータベースに対するSQLの処理は1ms~500msと処理時間がばらつきます (SQL文はSELECT data1 FROM Db1.dbo.table1 where data1=1;という感じで各テーブルには約3000レコード、SQLの結果は300件程度。Recordset Openメソッドの引数はCursorType:adOpenForwardOnly,Options:adLockReadOnly,LockType:adCmdTextです。)。 まったく同一のSQL文なので、データベース接続後、1回目は時間がかかるのは理解できますが、それ以降の処理を連続で繰返しているだけなので2回目以降処理時間が大きくばらつくことが不明です。 これは同一データベースに対して繰返しても、別々のデータベースに対して繰返してもほぼ同様の現象が発生します。 [確認したこと] - Windows認証、SQL Server認証いずれにおいても同様の傾向。 - 自プロセスあるいは他プロセスからターゲットとなるデータベースに先に接続した状態のままで実行すれば、処理時間のばらつきが1ms~80ms程度 本来、データベース毎に接続-->SQL実行-->解放を繰返せばよいのですが、Vistaにおいてはメモリリークが発生するため、この方法は採用できません。 現状、別プロセスでSQL文を実行するデータベースだけ、先に接続し、処理が完了すればこのプロセスを終了することで回避を考えているのですが、この方法では、SQLServerの負荷をかけてしまうため、よりよい方法が無いか教えてください。 よろしくお願い致します。