「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[ログ収集いろいろ]] --[[SQL Server 問題の分析方法]] * 目次 [#hda0322c] #contents *概要 [#c5301624] SQL Server のログについて纏めてみた。 *詳細 [#k348fb01] **SQLトレースとSQLプロファイラ [#fbf8654b] -[[SQLトレース>#pd019196]]がログ情報 -[[SQLプロファイラ>#d38872ef]]はSQLトレース取得のGUIツール。 ***SQLトレース [#pd019196] -トレース定義に一覧表示されているイベント クラスのインスタンスであるイベントが収集する。 -Transact-SQLのインスタンスでトレースを作成するためのストアド プロシージャが用意されている。 -SQL トレースの概要~ https://technet.microsoft.com/ja-jp/library/ms191006.aspx ***SQL Server Profiler [#d38872ef] ***SQLプロファイラ [#d38872ef] SQL トレースを作成および管理し、トレースの結果を分析および再生するために使用するインターフェイス -SQL Server Profiler~ https://technet.microsoft.com/ja-jp/library/ms181091.aspx ***[[バイナリ・ファイルのテキスト化>ログ収集いろいろ#iaa9b09a]] [#v974bcde] **エラー ログ [#tbaf6c9f] SQL Server のエラー ログには、 -[[SQL Server ログ>#v379e08f]] -[[Windowsのイベント・ログ>#r40175ee]] があるもよう。 ***SQL Server ログ [#v379e08f] ***Windowsの[[イベント・ログ]] [#r40175ee] [[こちら>イベント・ログ#d6c28200]]を参照。 ***参考 [#o41f9fd1] -エラー ログの監視~ https://technet.microsoft.com/ja-jp/library/ms191202.aspx -SQL Server エラー ログの表示~ https://technet.microsoft.com/ja-jp/library/ms187885.aspx -MSDN Blogs > Microsoft SQL Server Japan Support Team Blog --Tips:SQL Server の Log フォルダの位置の確認方法(ERRORLOG)~ http://blogs.msdn.com/b/jpsql/archive/2012/06/19/tips-sql-server-log.aspx -[SQL Troubleshooting] 第1回 : Tips~ SQL Server エラーログとイベント ログを採取する (SQL 2000 ~ 2008 R2)~ http://blogs.msdn.com/b/jpsql/archive/2012/03/27/info-sql-server-sql-server-error-log-and-event-log.aspx **クエリストア [#rcafcba1] -SQL server 2016の新機能クエリストアについて - 小物SEのメモ帳~ https://memorandom-nishi.hatenablog.jp/entry/2016/06/18/023116 -クエリストアって何だ? SQL Server 2016の~ パフォーマンス向上に注目:Database Watch(2015年6月版)(2/2 ページ) - @IT~ https://atmarkit.itmedia.co.jp/ait/articles/1506/23/news003_2.html **パフォーマンス ログ [#p4f0e175] SQLトレースログに加えて、 [[パフォーマンス カウンタ]]を選択、パフォーマンス ログを取得し~ 問題(ソース消費量が多い処理は何処か?)を特定できる可能性がある。 -SQL Serverの一般的なカウンタとしきい値:その1 |#|リソース|<オブジェクト>:<カウンタ>|カウンタの説明|「しきい値」を超える条件|「しきい値」を超えた場合の対策|h |~|~|~|~|~|備考|h |1|>|>|>|>|メモリ| |1-1||SQL Server:&br;Memory Manager:&br;Total Server Memory(KB)|SQL Serverのバッファ プールが使用しているメモリ量|サーバの物理メモリ容量に比べて高い。|メモリを増設する。| |~|~|~|~|~|この値は、仮想メモリもカウントするため、サーバの物理メモリ容量を超えることがある。タスク マネージャでは示されない、AWEのメモリ使用状況も提供される。| |2|>|>|>|>|バッファ キャッシュ| |2-1||SQL Server:&br;Buffer Manager:&br;Free pages|バッファ プールの[[未使用ページリスト(Free Page List) >物理メモリ管理]]にあるページの総数|4ページ以下|メモリを増設する。| |~|~|~|~|~|メモリ不足の場合、レイジー ライター(実行プランのキャッシュに必要なメモリを管理する)あるいはチェック ポイントなどの処理を保持できなくなる可能性がある。| |2-2||SQL Server:&br;Buffer Manager:&br;Buffer cache hit ratio|バッファ キャッシュのヒット率|90%以下|メモリを増設する。| |~|~|~|~|~|100%に近いほど適正。| |2-3||SQL Server:&br;Buffer Manager:&br;Page Life expectancy|バッファ プール内で、ページが参照されなくても保持される秒数|300秒以下|メモリを増設する。| |~|~|~|~|~|-| |3|>|>|>|>|ディスク| |3-1||SQL Server:&br;Buffer Manager:&br;Page Reads/Sec|SQL Serverのバッファ マネージャによる、ディスク上の読み取り回数/秒|ディスクの仕様で規定されている値の最大値に近い。|・メモリを増設する。&br;・ハードウェアのI/O容量を増やす。&br;・非正規化、インデックスの使用など、I/O操作が減るようにアプリケーションまたはDBを調整する。| |~|~|~|~|~|一般的に、Ultra Wide SCSIディスクは毎秒50~70回のI/O操作を処理できる。| |3-2||SQL Server:&br;Buffer Manager:&br;Page Writes/Sec|SQL Serverのバッファ マネージャによる、ディスク上の書き込み回数/秒|~|ハードウェアのI/O容量を増やす。| |~|~|~|~|~|一般的に、Ultra Wide SCSIディスクは毎秒50~70回のI/O操作を処理できる。| -SQL Serverの一般的なカウンタとしきい値:その2 |#|リソース|<オブジェクト>:<カウンタ>|カウンタの説明|「しきい値」を超える条件|備考|h |1|>|>|>|>|負荷(トランザクション)| |1-1||SQL Server:&br;Databases:&br;Transactions/sec|DBで開始されたトランザクションの数/秒|なし|この数値はシステム規模の参考になる。また、トランザクション負荷の増減をチェックするのにも役立つ。| |1-2||SQL Server:&br;Databases:&br;Active Transactions|現在のDBで、アクティブなトランザクションの数|~|「SQL Server:Databases:Transactions/sec」が、「SQL Server:Databases(_Total):Active Transactions」を超える場合、サーバの負荷が超過状態であることを示す。| |1-3||SQL Server:&br;General Statistics:&br;User Connections|SQL Serverに現在接続しているユーザ数|~|この値の大幅な変動には注意すべき。| |2|>|>|>|>|[[インデックス>SQL Server のインデックス]]| |2-1||SQL Server:&br;Access Methods:&br;Full Scans/Sec|フル スキャンの数/秒|なし|この値が大きくなる場合、アプリケーションがインデックスを効率的に使用していないことが考えられる。原因となっているコード(クエリ)を調べ、必要に応じてインデックスを作成する。また、「tempdb」テーブルはほとんどインデックス付けされないため、「tempdb」データベースから情報を返す場合、この数値が高くなることがある。| |2-2||SQL Server:&br;Access Methods:&br;Index Searches/Sec|インデックス検索数/秒|~|このカウンタによって、システムのデータ アクセスのパターンをチェックできる。インデックスは、「範囲スキャン」、「単一インデックス レコードのフェッチ」、「インデックスの中で再度位置付け」に使用される。| |2-3||SQL Server:&br;Access Methods:&br;Page Splits/Sec|ページ分割回数/秒|~|性能上問題となる[[ページ分割>SQL Server のインデックス#z9ed663c]]の回数をチェックできる。| |3|>|>|>|>|[[ロック>DBMSのロック・分離戦略と同時実行制御]]| |3-1||SQL Server:Locks:&br;Average Wait Time(ms)|「待ち状態の原因となる各ロック要求」の「平均待ち時間(ミリ秒)」|なし|状況の監視に使用する。| |3-2||SQL Server:Locks:&br;Lock Waits/Sec|ロック取得のために、待機しなければならない要求の数/秒|~|~| |3-3||SQL Server:Locks:&br;Lock Timeouts/sec|[[タイムアウト>SQL Server でのロック・タイムアウト]]したロック要求の数/秒|~|NOWAITロックの要求を除く。状況の監視に使用する。| |3-4||SQL Server:Locks:&br;Number of Deadlocks/sec|[[デッドロック>SQL Server でのデッドロック]]に帰着するロック要求の数/秒|~|状況の監視に使用する。| |3-5||SQL Server:Latche:&br;Average Latch Wait Time|ラッチ要求の「平均待ち時間 (ミリ秒)」(ラッチは、負荷の軽い短期の同期化オブジェクトで、トランザクション全体にわたってロックする必要がない動作を保護する。主に、接続に対して行が読み取られている間、行を保護するために使用される。)|~|状況の監視に使用する。この数値が大きくなると、サーバがリソースを求めて競合に巻き込まれる恐れがある。| |4|>|>|>|>|その他| |4-1||SQL Server:&br;SQL Statistics:&br;SQL Compilations/Sec|SQLコンパイルの回数/秒。クエリの再コンパイルの回数も含まれる。|なし|SQL Serverのユーザ利用状況が安定したら、通常、この値は安定した状態になる。クエリの再コンパイル処理は、「スキーマの変更」、「テーブルに多くの行をインサートする」、「テーブルから多くの行をデリートする」などの操作によって発生する。値が常に高い場合は、調査が必要。[[アドホック クエリの問題の監視>SQL Server アドホック クエリ問題の監視]]に使用できる。| |4-2||SQL Server:&br;SQL Statistics:&br;SQL Re-Compilations/Sec|クエリの再コンパイルの回数/秒。|~|~| |4-3||SQL Server:&br;Buffer Manager:&br;Memory Grants Pending|作業領域メモリの使用許可を待っている処理の数。|~|[[アドホック クエリ>SQL Server アドホック クエリ問題の監視]]、[[結合方法>SQL Server 結合方式の問題を監視する]]の問題を監視するのに使用できる。| |4-4||SQL Server:&br;Buffer Manager:&br;Stolen Page Count|他のサーバ メモリ要求によって奪われたバッファ キャッシュのページの数|~|~| *参考 [#wc895c87] -イベントの監視~ https://technet.microsoft.com/ja-jp/library/ms190378.aspx --SQL Server イベント クラスの参照~ https://technet.microsoft.com/ja-jp/library/ms175481.aspx **SQL Troubleshooting [#z06a640a] MSDN Blogs > Microsoft SQL Server Japan Support Team Blog > SQL Troubleshooting -[SQL Troubleshooting] SQL Server トラブルシューティング 6 回シリーズのご案内~ http://blogs.msdn.com/b/jpsql/archive/2012/03/30/sql-server-6.aspx --第1回 : Tips - SQL Server エラーログとイベント ログを採取する (SQL 2000 ~ 2014) Ver 2.0~ http://blogs.msdn.com/b/jpsql/archive/2012/03/30/info-sql-server-sql-server-error-log-and-event-log.aspx --第2回 : Tips -パフォーマンス ログの採取方法 (Windows Server 2003 ~ Windows Server 2012 R2)~ http://blogs.msdn.com/b/jpsql/archive/2012/04/20/tips-windows-server-2003-windows-server-2008-r2.aspx --第3回 : パフォーマンスログの確認方法について~ http://blogs.msdn.com/b/jpsql/archive/2012/05/07/sql-troubleshoot-3-6.aspx --第4回 : サーバートレースの解析方法 1~ http://blogs.msdn.com/b/jpsql/archive/2012/05/07/sql-troubleshooting-4-1.aspx --第5回 : サーバートレースの解析方法 2~ http://blogs.msdn.com/b/jpsql/archive/2013/02/11/sql-troubleshooting-5-2.aspx --第6回 : ブロッキング情報の確認方法~ http://blogs.msdn.com/b/jpsql/archive/2012/07/24/sql-troubleshooting-6-sql-server-2000-2008-r2.aspx ---- Tags: [[:データアクセス]], [[:SQL Server]], [[:障害対応]], [[:性能]], [[:デバッグ]]