2012-03-05 14 views
0

テーブル/インデックススキャンをキャプチャするためにSQL Server Profiler(2008)でトレースを実行しています。大きなテーブルでスキャンしているかどうかを知る必要がある追加された列をEventClass(s​​can:started/stopped)、dbname、objectid、starttime、spid、indexidに最小化しました。スキャン:SQL Serverプロファイラトレースで開始され、不正なインデックスIDが生成される

捕捉された結果には、いくつかのオブジェクトIDがヌルである(すなわち、問題のデータベース/私がフィルタリングしたデータベースに存在しない)という問題があり、第2の問題は、 、例えば一部の表にはクラスター化された索引が1つしかなく、トレースによって提供される索引IDは8に指定され、もう1つは122ですが、表には20未満の索引があります。

nullオブジェクトIDが内部仮想テーブルである可能性があると私は思っていましたが、そのままでもかまいませんが、標準のユーザーテーブルの間違ったインデックスIDによってパフォーマンスのトラブルシューティングが崩れてしまいます。任意のヒントを事前に

おかげで、

ナマン

答えて

0

あなたがやろうとしているすべてのスキャンが行われて(それらの原因となったクエリを特定するとは対照的に)のではなく、トレースを使用しているかどうかを識別している場合DMV sys.dm_db_index_operational_statsシステムを見れば良い結果が得られるかもしれません。 テーブルスキャンは完全に独立しては行われませんが、range_scan_countカラムに表示されます。

またお返事エドためsys.dm_db_index_usage_stats

+0

おかげでuser_scansを参照してください、我々はそれをキャプチャする前に、メタデータ・キャッシュをフラッシュされるため、エントリに一部のデータが欠落する危険がありませんか?これは非常に利用頻度の高い環境で、アクティブなユーザーは約500人です – Naman

+0

@Naman - 正直言ってわかりません。これは集計されたデータなので、自動的にフラッシュされる可能性は低いと思っていました。私が知っている限り、サーバーの再起動または手動フラッシュはこれらの数字をクリアします。これが本物の問題だと感じる場合は、定期的にデータのスナップショットを取る予定のタスクを設定することができます。 –

関連する問題