SQL Server 結合方式の問題を監視する
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>SQL Server 問題の分析方法]]
* 目次 [#c3ba8eb5]
#contents
*概要 [#z377f5c9]
SQL Serverでは、結合方法を
-[[ネスト化ループ結合>#j08ad2b5]]
-[[マージ結合>#oda2aa11]]
-[[ハッシュ結合>#fcfd71b0]]
から選択できる。
*詳細 [#c4b3031e]
**アルゴリズム [#x6a7e92c]
三つのアルゴリズムは,一般的に
>ネスト・ループ結合 < マージ結合 < ハッシュ結合
の順で高速(ハッシュ結合が最速)。
ただし、以下のケースでは、必ずしもこの順番にならない。
-二つのテーブルのレコードの数が極端に違う場合
-両方のレコードの数が十分小さいとき
-検索条件に合致した1レコードを早く返したい
***ネスト化ループ結合 [#j08ad2b5]
-単純に二重ループを回してテーブルを結合する方法
-インデックスが設定されていない小さなテーブルと~
インデックスが設定されている大きなテーブルの二つを結合す...
***マージ結合 [#oda2aa11]
-ネスト・ループ結合の改良版
-二つのテーブルの結合フィールドをあらかじめソート。
-ソート結果の結合フィールドのポインタを上から下へと順に走...
-これによって、レコードの走査が1回で済む。
***ハッシュ結合 [#fcfd71b0]
-ネスト・ループ結合の改良版
-ハッシュ結合は高速だが、
--ハッシュ テーブルを作成するため、
--元のテーブルのサイズが大きい場合、~
ハッシュ テーブルがメモリを大量に消費することがある。
**監視方法 [#uba6b518]
この場合、[[パフォーマンス カウンタ]]を使用して監視を行う。
この場合、
-SQL Server:Buffer Manager:Free pages
のカウンタ値が低く、
-SQL Server:Buffer Manager:Stolen Page Count
-SQL Server:Buffer Manager:Memory Grants Pending
のカウンタ値が高いという状態になる。
**対策方法 [#d9ecefae]
この状態では、SQL Serverのメモリ不足が発生する可能性があ...
この場合、
-「ネスト化ループ結合」に変更できる
-「ハッシュ結合」を使用している
クエリを探すことに重点を置く。
結合方法の見分けるには、実行プランを確認する。
*参考 [#ba1567a7]
詳細は、以下のURLを参照のこと。
-PASSJ & SQL Server Developer Center ジョイントコラム~
https://msdn.microsoft.com/ja-jp/library/Cc707301
--第 2 回 「クエリの実行方法を理解する」~ システム構築 ~~
http://msdn.microsoft.com/ja-jp/library/cc707362.aspx
-特集:基礎から理解するデータベースのしくみ~
基礎から理解するデータベースのしくみ(4):ITpro~
http://itpro.nikkeibp.co.jp/article/COLUMN/20060111/227102/
----
Tags: [[:データアクセス]], [[:SQL Server]], [[:障害対応]]...
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>SQL Server 問題の分析方法]]
* 目次 [#c3ba8eb5]
#contents
*概要 [#z377f5c9]
SQL Serverでは、結合方法を
-[[ネスト化ループ結合>#j08ad2b5]]
-[[マージ結合>#oda2aa11]]
-[[ハッシュ結合>#fcfd71b0]]
から選択できる。
*詳細 [#c4b3031e]
**アルゴリズム [#x6a7e92c]
三つのアルゴリズムは,一般的に
>ネスト・ループ結合 < マージ結合 < ハッシュ結合
の順で高速(ハッシュ結合が最速)。
ただし、以下のケースでは、必ずしもこの順番にならない。
-二つのテーブルのレコードの数が極端に違う場合
-両方のレコードの数が十分小さいとき
-検索条件に合致した1レコードを早く返したい
***ネスト化ループ結合 [#j08ad2b5]
-単純に二重ループを回してテーブルを結合する方法
-インデックスが設定されていない小さなテーブルと~
インデックスが設定されている大きなテーブルの二つを結合す...
***マージ結合 [#oda2aa11]
-ネスト・ループ結合の改良版
-二つのテーブルの結合フィールドをあらかじめソート。
-ソート結果の結合フィールドのポインタを上から下へと順に走...
-これによって、レコードの走査が1回で済む。
***ハッシュ結合 [#fcfd71b0]
-ネスト・ループ結合の改良版
-ハッシュ結合は高速だが、
--ハッシュ テーブルを作成するため、
--元のテーブルのサイズが大きい場合、~
ハッシュ テーブルがメモリを大量に消費することがある。
**監視方法 [#uba6b518]
この場合、[[パフォーマンス カウンタ]]を使用して監視を行う。
この場合、
-SQL Server:Buffer Manager:Free pages
のカウンタ値が低く、
-SQL Server:Buffer Manager:Stolen Page Count
-SQL Server:Buffer Manager:Memory Grants Pending
のカウンタ値が高いという状態になる。
**対策方法 [#d9ecefae]
この状態では、SQL Serverのメモリ不足が発生する可能性があ...
この場合、
-「ネスト化ループ結合」に変更できる
-「ハッシュ結合」を使用している
クエリを探すことに重点を置く。
結合方法の見分けるには、実行プランを確認する。
*参考 [#ba1567a7]
詳細は、以下のURLを参照のこと。
-PASSJ & SQL Server Developer Center ジョイントコラム~
https://msdn.microsoft.com/ja-jp/library/Cc707301
--第 2 回 「クエリの実行方法を理解する」~ システム構築 ~~
http://msdn.microsoft.com/ja-jp/library/cc707362.aspx
-特集:基礎から理解するデータベースのしくみ~
基礎から理解するデータベースのしくみ(4):ITpro~
http://itpro.nikkeibp.co.jp/article/COLUMN/20060111/227102/
----
Tags: [[:データアクセス]], [[:SQL Server]], [[:障害対応]]...
ページ名: