6章 パフォーマンスの監視とトラブルシューティング
6.1 パフォーマンス監視のためのデータ収集
1.1 SQLSVメモリ領域
- メモリ動作の流れ
- SELECT実行
- プロシージャキャッシュSELECT
- 物理ファイルからSELECTデータ読み取り
- クライアントに結果返す
- UPDATE,INSERT実行
- プロシージャキャッシュUPDATE,INSERT
- バッファキャッシュの変更
- ログキャッシュからログファイルに先行書き込み
- チェックポイントでバッファキャッシュ分をデータファイルに書き込み
1.2 ロックによるTR分離
- ロックマネージャにより、データ、もしくはインデックスキーにかけられる。
- ロックは下記の順で範囲を拡大する。エスカレーションという。
- ページ
- エクステント
- テーブル
- ロックの種類
- 共有ロック
- SELECTで起こる。これは基本テーブルロックだね。
- 更新ロック
- WHEREをつかったUPDATE,DELETEのときに行が決まるまでの検索状態の時にかかる。みつかったら排他ロックに昇格!
- 排他ロック
- INSERT, UPDATE, DELETEによるデータ更新中のとき起こる。TR終了まで完全行ロックする。
- 共有ロックと更新ロックは共存できる。そりゃ新発見。。でもどっちも検索だからできるかー。
1.3 デッドロック
- 2つずつのUPDATE文で簡単に起こせます。
- デッドロックモニタが常に監視してる。
- 強引にTR完了させる。エラーメッセージ1205が返る。
1.4 SQLServerの監視
- 動的管理オブジェクト
- 動的管理ビュー
- プレフィックスはdm
- dm_exec_sessions
- すべてのセッション
- dm_exec_requests
- セッションごとのコマンド処理要求
- dm_exec_query_stats
- プロシージャキャッシュのクエリプランのパフォーマンス統計
- dm_io_pending_io_requests
- 保留中の入出力要求情報
- dm_os_memory_pools
- 各メモリオブジェクト情報
- dm_tran_locks
- ロック情報
- dm_db_index_usage_stats
- インデックス利用状況の統計
- dm_db_index_physical_stats
- インデックスのサイズおよび断片化情報
- このまんまじゃやっぱ使えねーんだよね。Obj番号とかで言われても、わかんないし。ほんとに使える動的クエリはMSページで探すしかないわな。
- dm_exec_sessions
- システムモニタ
- 管理ツールの『パフォーマンス』ってやつだね。SQLSVインストールしてると項目が増えてます。
- SQL Server:Buffer Manager
- メモリ使用量、キャッシュヒット率
- SQL Server:Database
- 使用できるログ空きディスク容量。TR数。
- SQL Server:Statistics
- コンパイル数、バッチの数に関する情報
- SQL Server:General Statistics
- インスタンスに接続してるユーザ数、サーバ全体
- SQL Server:Locks
- SQL Server:Memory Manager
- ロック構造の総数
- SQL Server:Plan Cache
- ストアド、トリガ、プロシージャキャッシュ
- SQL Server:Buffer Manager
- SQL Server Profiler
- トレーステンプレートに基づいたトレースデータ収集
- トレースデータ収集しながら、リアルタイムなトレース結果の表示
- トレースデータ保存
- トレースデータ再生実行
- 知らなかったー
- トレースのプロパティでの設定は使える
- ファイルも最初に設定して、KBでどんどん入れ替えってできるのね
- テーブルに入れていける設定あるのね。勝手にテーブルできたー。SELECT INTOでいきなり作ってくれんだー。すげ。
- サーバがトレースデータを処理するにチェックすると負荷をかけない
- トレースファイルのテンプレートって使えるねー。
- 実はパフォーマンスチェック用とかいろいろ用意されてる
- deadlock graphだせたー
- トレースのプロパティでの設定は使える
6.2 データベースエンジンのチューニング
- SQL profilerでテンプレートにtuningってのがあるのでそれでtrcファイルを作成する。
- それをデータベースチューニングアドバイザのワークロードってとこにセットして分析する。
- キホンはインデックスの状況とかそのへんを一気にみれるよってとこかなー。