Open棟梁Project - マイクロソフト系技術情報 Wiki
主にSQL Server パーティション分割のOLTPにおける効果について説明する。
パーティション分割は、テーブルだけでなく、インデックスにも適用できる。
「パーティション」毎に
「並列クエリ」の次数に以下のオプションが影響を与える。
affinity mask | CPUのアフィニティ マスク |
max degree of parallelism 21 | 「並列クエリ」の最大次数 |
MAX_DOP | 「並列クエリ」の最大次数 |
MAXDOP | 「並列クエリ」の最大次数 |
「パーティション」数 | 「並列クエリ」の次数 |
これらのオプションの優先順は、以下のようになる。
affinity mask > MAX_DOP > MAXDOP > max degree of parallelism
なお、複数のユーザが、クエリを実行する場合、
プランの次数は、その処理開始時点の各CPUの処理量を考慮する。
(具体的な"しきい値"は、Microsoftから公開されていない)。
「パーティション分割列」を検索条件に追加した場合、
#「パーティション テーブル」に「固定」された、「パーティション インデックス」である必要はない。
パーティション分割によって、クエリ性能が劣化するケースもあるもよう。
パーティショニングによって読み取り数(アクセスされたパーティション数)が変わってくる(大きくなる)ケースがある。
ただし、パーティションキーを含めた検索では、読み取り数は大きくならないとなっている。
パーティション テーブルとパーティション インデックスに対するクエリの実行プランは、
Transact-SQL の SET SHOWPLAN_XML または SET STATISTICS XMLを使用するか、
SQL Server Management Studio のグラフィカル実行プラン出力を使用して調べることができる。