Support Service Day のご案内 毎月 8 日を「サポート・サービスディ」とし、障害以外の製品利用技術に関してお客様からのご質問や疑問にお応えする機会を設けました(こちらは無償となります)。相談されたい案件をお持ちのお客様は、毎月10日から20日までの期間内に以下をご記載の上、s8spday@microsoft.com 宛に電子メールをお送りください。 ①サポート契約番号 ②相談事項概要 後程、弊社担当者よりご連絡を差し上げ日程等を調整させて頂きます。 場所:日本マイクロソフト(株) 調布技術センター 対象製品:SQL Server, Internet Information Server, Internet Explorer, Visual Studio, SDK(但し最新バージョンと一世代前のバージョン) 受付期間:毎月10日から20日までの期間 サポート・サービスディ:休日を除く毎月8日 午前10:00-午後05:00 議題:お客様相談事項 時間:2-3時間の予定 弊社参加者:マネージャ、エンジニア
詳細はこちら
神谷 雅紀SQL Server Escalation Engineer
SQL Server において、やらなければいけないこと / やってはいけないことを、Do's&Don't's として、シリーズで紹介したいと思います。初回の今回は、Profiler GUI についてです。
一定量の負荷がある環境において、Profiler GUI を用いてリアルタイムモニタをしたり、テーブルにトレースデータを保存したりすることは、パフォーマンスなどの問題を発生させる要因となります。絶対にやってはいけない、というほどではありませんが、ベストプラクティスとして、やらない方がよいことは確かです。
多数のクライアント接続があり、多数のリクエストを受け付けている SQL Server が生成するすべてのイベントをひとつの Profiler で受け取ることになるため、Profiler がボトルネックとなり、SQL Server 全体のパフォーマンスが著しく悪化し、実行中のクエリがタイムアウトする、ログインがタイムアウトする、場合によっては、クラスタやミラーリングのフェールオーバなどを招くこともあります。Profiler GUI は、ひとつの普通のクライアント接続を通じて、SQL Server からトレースイベントを受け取ります。当然、その接続で転送できる量は限られており、また、それをグラフィカル表示しなければならないため、SQL Server 側で生成されるイベント量が、Profiler が処理できるイベント量の限界を超える状況になると、SQL Server 側では新たなイベントを Profiler に渡せなくなり、イベントを生成している一般のクライアントは、イベント書き込み待ち状態になります。
さらに、Profiler を経由して SQL Server のテーブルへイベントを書き込んでいる場合は、SQL Server → Profiler → SQL Server とイベントデータが渡されることになり、パフォーマンスへの影響はより大きくなります。
テスト環境など負荷を制御できる環境や、非常に負荷の低く、ほとんど処理が行われていないような環境を除いて、何らかのトラブルシューティングのために Profiler GUI を用いて情報を採取することは避けた方がよいでしょう。
SQL Server 側でトレースイベントをファイルに直接書き出す機能 (SQL Trace/SQL トレース、もしくは、Server Trace/サーバートレース、Server-side Trace/サーバーサイドトレース と呼ばれる) を使用します。
SQL Trace は、sp_trace_* ストアドプロシージャを用いて、定義、実行開始/停止を行います。sp_trace_* ストアドプロシージャを使用した定義や開始のための T-SQL スクリプトは、Profiler GUI を用いて簡単に作成することができます。
SQL トレーススクリプトの作成、実行 (SQL Server 2008 R2, SQL Server 2008, SQL Server 2005)
SQLトレーススクリプトの作成、実行 (SQL Server 2000)
作成されたトレース結果を含むファイル (*.trc) は、Profiler GUI や fn_trace_gettable により参照可能です。
これに気づくのが遅かった。。。
Production環境でtemplate(tuning)を使用して実行(tableではなくfile保存)すると、Blockingが発生し、多くのアプリケーションでtimeoutが発生し、現場に影響が出てしまった。次回実行時には、この情報を元に実行しようと思う。