More Related Content Similar to COD2012 T2/T3 : 実機で試す SQL Server の現状取得
Similar to COD2012 T2/T3 : 実機で試す SQL Server の現状取得 (20) More from Masayuki Ozawa (18) COD2012 T2/T3 : 実機で試す SQL Server の現状取得1. 実機で試す SQL Server の現状取得
SQLTO 小澤 真之 (@Masayuki_Ozawa)
http://engineermemo.wordpress.com
2. 自己紹介
• SQLTO という SQL Server のコミュニティの運営スタッフをしています。
– 2012/8/4 (土) に次回の勉強会を予定しています。
• SE の雑記というブログ で (http://engineermemo.wordpress.com)で SQL Server を
中心とした Microsoft 製品の検証結果を誤字脱字を交えながら、つらつらと投稿しています
ので興味のある方がいらっしゃいましたらご覧いただけると幸いです
• SNS のアカウント
– Twitter : @Masayuki_Ozawa
– Facebook :masayuki.ozawa
• なぜスピーカー名が“ムッシュ 小澤”になっているか気になった方がいらっしゃいましたらこちらを参照ください
(気づいたらこのスピーカー名になっていたのですが面白そうだからそのままにしました)
名付け親 スピーカー名を
提出の容疑者
– http://togetter.com/li/169645
– プライバシー保護のため画像を一部モザイク化してお送りしています。
2012/6/9 Community Open Day 2012 2
3. 本日のハンズオン
• 配布物の確認
– ハンズオンマニュアル (1 部) があるかをご確認ください
• 本日は 3 種類のハンズオンを用意しています。
– ハンズオン 3 は時間が余った方向けのオプションとして用意しました
– ハンズオン 1 / 2 を今回のセッションの範囲としています
• 本ハンズオンは SQL Server のメモリの使用状況やインデックスの利用状況の
取得についての足掛かりとなる情報を取得するためのセッションとなっています。
取得した情報を基にしたパフォーマンスチューニングには触れていませんのでご了
承ください。
2012/6/9 Community Open Day 2012 3
4. 本日の Agenda
ハンズオンの内容について (10 分)
ハンズオン 1 : メモリ情報の取得 (15 分)
ハンズオン 2 : インデックス使用状況の確認 (15 分)
まとめ / 質疑応答 (10 分)
2012/6/9 Community Open Day 2012 4
6. ハンズオン 1
• ハンズオンの内容
– データを SELECT / INSERT / UPDATE するとディスクからメモリ (データキャッシュ)
にデータがロキャッシュされます。
また、これらのデータを取得するためのクエリを実行するとそのクエリを実行するために必
要となる実行プランがメモリ (プランキャッシュ) にキャッシュされます。
– 本ハンズオンではこれらのキャッシュでどの程度のサイズのメモリが使用されているかを確
認します。
• 使用するツール
– SQL Server Management Studio
– パフォーマンスモニタ
2012/6/9 Community Open Day 2012 6
7. 参考) ざっくりとした SQL Server のメモリ管理
Database Cache (Buffer Cache)
ハンズオンで
確認
Plan Cache (Query Cache)
バッファプール Log Cache
Buffer Manager /
Memory Manager が管理
= Min / Max Server Lock Memory
Memory の設定
Granted Workspace Memory
Connection Memory
MemToLeave (MemToReserve)
非バッファプール
Buffer Manager / Worker Thread Stack
Memory Manager の
管理外 SQL Server フットプリント
2012/6/9 Community Open Day 2012 7
8. ハンズオン 2
• ハンズオンの内容
– データを効率よく検索するためのインデックス。
インデックスの操作には全件を読む Scan と対象のデータをポイントで読む Seek の 2
種類の代表的な操作があります。
– 本ハンズオンでは設定されているインデックスで Seek / Scan が行われている回数を
確認します。
• 使用するツール
– SQL Server Management Studio
2012/6/9 Community Open Day 2012 8
9. 参考) Scan 操作と Seek 操作
Scan 操作 Seek 操作
ルート ルート
ノード ノード
中間 中間 中間 中間
ノード ノード ノード ノード
リーフ リーフ リーフ リーフ リーフ リーフ
ノード ノード ノード ノード ノード ノード
取得対象のデータの場所が特定できないため 取得対象のデータの場所が特定できるため
リーフノードのページをすべて確認する 対象のリーフノードのページを取得する
実行コストが高い 実行コストが低い
2012/6/9 Community Open Day 2012 9
10. ハンズオン開始
• それでは、お手元のハンズオンマニュアルを参照して演習を実施してください
– 開始して、しばらくしたら一度進捗を確認させていただきます
• 内容に不明な点が遠慮なくありましたらお声掛けください
2012/6/9 Community Open Day 2012 10
12. ハンズオン 1 (1/2)
パフォーマンスモニターでは取得が出来ない詳細なメモリの情報 (データベース別 / クエ
リの種類別) に関しては動的管理ビュー (DMV) を使用して取得することができます。
SQL Server のメモリの使用状況を確認する場合、
– SQL Server でメモリを ~ MB 使用している
という状態を確認するのではなく
– SQL Server のデータのキャッシュで ~ MB メモリを使用している
– SQL Server のクエリのキャッシュで ~ MB メモリを使用している
– データのキャッシュの中で ~ データベースが ~ MB メモリを使用している
– クエリのキャッシュではストアドプロシージャが ~ MB / アドホッククエリが ~ MB / プリ
ペアードクエリが ~ MB メモリを使用している
という情報が重要になってきます。
2012/6/9 Community Open Day 2012 12
13. ハンズオン 1 (2/2)
• パフォーマンスモニターのデータはログに取得することができます。このログは CSV
形式でエクスポートすることが可能ですので以下のようなグラフを作成することが
できます。
– SQL Server 2008 以降の Enterprise Edition を使用している場合はデータコレ
クションの機能を使用することでパフォーマンスのログを取得することができます。
空きメモリ
プランャキャッシュ
データキャッシュ
2012/6/9 Community Open Day 2012 13
15. ハンズオン 2 (1/2)
• データの件数が多いテーブル (クラスター化インデックス) に非クラスター化インデッ
クスを設定することで検索の効率が向上しますが、更新の頻度が多いテーブル
だった場合には、更新される対象が多くなり更新のコストが上がる可能性があり
ます。
– 更新頻度の高いテーブルの判断
– 更新頻度の高いテーブルに不要なインデックスを設定
– 必要なインデックスが不足している
• という判断の取り掛かりとなる情報を取得することが可能となります。
2012/6/9 Community Open Day 2012 15
16. ハンズオン 2 (2/2)
• 動的管理ビューからデータを取得するのではなく、設定されているインデックスを
ベースにして動的管理ビューのデータを取り出すのがポイント
– 今回使用した動的管理ビューには 使用されたインデックス の情報が記録されているた
め、度的管理ビューだけでは 一度も使用されていないインデックスの情報 を取得する
ことができません。
• 再起動前にデータを取得するのが重要
– 今回使用した動的管理ビューのデータは SQL Server を最後に起動してからの累計
値となっています。
– SQL Server のサービスを再起動すると初期化されてしまうため、活きたデータを取得
するためには再起動前に取得する必要があります。
2012/6/9 Community Open Day 2012 16