■ Windwosのパフォーマンスモニタで確認する項目
・SQLSERVERで使用しているドライブの下記の項目
\PhysicalDisk()\Avg. Disk Queue Length
\PhysicalDisk()\Disk Reads/sec
\PhysicalDisk()\Disk Writes/sec
・CPU
\Processor(_Total)\% Processor Time
・SQLのキャッシュヒット率
\SQLServer:Buffer Manager\Buffer cache hit ratio
SQL Statistics
・Batch Requests/sec
→秒間のコマンド数(問合せのクエリ以外のコマンドもカウントされるので、
実際のクエリ発行数ではありませんが、利用状況を把握できます)
Buffer Manager
・Page life expectancy
→DB上にデータを保持している時間 300秒を下回っているとメモリが足りていない可能性
Locks
・Lock Requests/sec
・Lock Waits/sec
→ロック待ち
Access Methods
・Index Searches/sec
・Probe Scans/sec
・Range Scans/sec
・Full Scans/sec
→Full Scan(テーブルスキャン)が多いと適切なインデックスが無い可能性
■ディスクのパフォーマンス測定ツールとして
CrystalDiskMark
可能であれば、ファイルサイズ 1000MBで
どれくらいのパフォーマンスが出るストレージか確認。
その他参考サイト
http://msdn.microsoft.com/ja-jp/magazine/cc135978.aspx
・不足インデックスのコスト
・I/O に関してコストのかかるクエリ
・CPU に関してコストのかかるクエリ
その他、DBのオブジェクト確認用スクリプト
select SU.NAME, (SELECT CASE SP.action WHEN '26' THEN 'REFERENCES' WHEN '178' THEN 'CREATE FUNCTION' WHEN '193' THEN 'SELECT' WHEN '195' THEN 'INSERT' WHEN '196' THEN 'DELETE' WHEN '197' THEN 'UPDATE' WHEN '198' THEN 'CREATE TABLE' WHEN '203' THEN 'CREATE DATABASE' WHEN '207' THEN 'CREATE VIEW' WHEN '222' THEN 'CREATE PROCEDURE' WHEN '224' THEN 'EXECUTE' WHEN '228' THEN 'BACKUP DATABASE' WHEN '233' THEN 'CREATE DEFAULT' WHEN '235' THEN 'BACKUP LOG' WHEN '236' THEN 'CREATE RULE' ELSE '判別不能' END )AS '権限', SO.NAME, (select CASE SO.XTYPE WHEN 'U' THEN 'テーブル' WHEN 'P' THEN 'ストアドプロシジャー' ELSE 'それ以外' END ) AS '種類', SO.CRDATE from sysusers SU,sysprotects SP, sysobjects SO where SU.UID = SP.UID AND SO.ID = SP.ID AND SO.XTYPE IN('U','P') order by SU.NAME,SO.CRDATE desc --order by SO.CRDATE desc,SU.NAME