インデックスの再構築・デフラグ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>SQL Server]]
* 目次 [#u956a893]
#contents
*概要 [#k1b49bf6]
[[インデックス>SQL Server のインデックス]]の[[断片化>SQL ...
*監視 [#r4ac0f88]
「DBCC SHOWCONTIG」ステートメントで、「インデックスの断片...
(DBCC SHOWCONTIGは削除予定なので、sys.dm_db_index_physic...
**断片化の監視 [#qe662148]
-「DBCC SHOWCONTIG」ステートメントを使用することで、~
「インデックスの断片化」レベルを監視し、断片化の進んだイ...
-「DBCC SHOWCONTIG」ステートメントの「TABLERESULTS」オプ...
これをテーブルに定期的に書き込めば、時系列に「インデック...
-負荷の高いサーバで「DBCC SHOWCONTIG」ステートメントを実...
インデックスの「リーフ ページ」がスキャンされないようにし...
**実行結果 [#rfe6bb39]
-再構築したばかりの「クラスタ化インデックス」に対して、~
「DBCC SHOWCONTIG」ステートメントを実行した際の出力。
- スキャンされたページ数........................... : 52...
- スキャンされたエクステント数................ : 6604
- 切り替えられたエクステント数................ : 6603
- エクステントごとの平均ページ数............ : 8.0
- スキャン密度 [最善 :実際] ...................... : 99....
- 論理スキャン フラグメンテーション...... : 0.01%
- エクステント スキャン フラグメンテーション.... : 0.14%
- ページごとの平均空きバイト数............... : 10.5
- 平均ページ密度 (全体)............................. : 9...
-再構築したばかりの「非クラスタ化インデックス」
(「クラスタ化インデックス」が存在しない場合)に対して、~
「DBCC SHOWCONTIG」ステートメントを実行した際の出力。
- スキャンされたページ数............................ : 5...
- スキャンされたエクステント数.................. : 6913
- 切り替えられたエクステント数................. : 6912
- エクステントごとの平均ページ数............. : 8.0
- スキャン密度 [最善 :実際]........................ : 99...
- エクステント スキャン フラグメンテーション .... : 0.03%
- ページごとの平均空きバイト数................. : 397.0
- 平均ページ密度 (全体).............................. : ...
**出力結果 [#d08c7ded]
ここでは、「DBCC SHOWCONTIG」ステートメントで出力した情報...
「インデックスの断片化」レベルを確認する2つの方法につい...
***「スキャン密度(%)」で確認 [#j27804cb]
-「ページ分割」が発生すると、~
分割された一部の「リーフ レベル ページ」が、別の「エクス...
「インデックスの断片化」が進むと、正味のデータ量の割に「...
-この問題は、「スキャン密度(%)」で判断することができる...
「スキャン密度(%)」が小さくなった場合、「インデックス...
-「スキャン密度(%)」は、次の式で算出される。
|値|説明(式)|h
|スキャン密度(%)|最善のエクステント変更回数 / 現在のエ...
|最善のエクステント変更回数|すべての「ページ」が連続的に...
|現在のエクステント変更回数|実際のスキャン処理を実行して...
***「論理スキャン フラグメンテーション」で確認 [#p8a27259]
-「クラスタ化インデックス」の場合、~
「リーフ レベル ページ」の「データ ページ」中のデータが物...
しかし、「ページ分割」が発生すると、分割された一部の「デ...
物理的に離れた位置に格納されることがあるので、順序が不正...
-この問題は、「論理スキャン フラグメンテーション」で判断...
この値が大きくなった場合、「インデックスの断片化」が進ん...
この値はできるだけ0%に近い値にする。0 ~ 10%が許容範囲であ...
これを超えると、「インデックス スキャン」の性能が低下する...
|値|説明(式)|h
|論理スキャン フラグメンテーション(%)|物理的に順序正し...
|エクステント スキャン フラグメンテーション(%)|物理的...
*修正 [#e0c20d82]
**インデックスの再構築 (alter index rebuild) [#td4b0cd0]
再構築なので断片化の度合に響されず、All or Nothing。
-テーブル、インデックスの構造や制約がわからない場合でも、~
1つのステートメントでテーブルの全ての「再構築」ができる...
複数の「DROP INDEX」と「CREATE INDEX」を使用して「再構築...
-同時に、オプティマイザの使用する統計が更新される。
-オプションで「ページ密度」を変更することができる。
**再構成 (alter index reorganize) [#v09ecaad]
再構成なので断片化の度合に響され、キャンセル時点までの再...
-「リーフ レベル ページ」を物理的に順序正しく並べ替え、「...
-これにより、「インデックス スキャン」の性能が向上する。
-ただし、この方法は「再構築」の操作よりも劣る。
-期待した効果が得られない場合は、「再構築」が必要になる。
**比較 [#c19901b1]
***同時実行性 [#da3adf94]
-「再構築」
--処理中インデックス全体がロックされインデックスは使用不可
--ONLINEオプションを付与した場合は使用可だが、~
再構築を完了するためにかなり多くのリソースを使用する。
-「最適化」~
処理中ページのみロックされインデックスは使用可
***必要なデータ領域の空き容量 [#p9d58da8]
-「再構築」~
再構成よりも多い。
--「再構築」には、「データ ファイル」に十分な空き容量が必...
--必要な空き領域は、再構築するインデックス量に応じて変化...
--「クラスタ化インデックス」の場合、~
「必要な空き領域 = 1.2 * (平均行サイズ) * (行数)」が目安...
-「最適化」~
再構築よりも少ない。
***トランザクション ログ量の比較 [#q7000327]
-「再構築」
--インデックスの「ページ」のイメージをトランザクション ロ...
--このため、トランザクション ログ領域を大量に使用すること...
--必要なトランザクション ログ領域は、大まかに見積もって、...
--「ページ」数は、「DBCC SHOWCONTIG」ステートメントで確認...
--ただし、「再構築」のトランザクション ログは、~
「一括ログ復旧モデル」では記録されないので、必要に応じて...
-「最適化」
--一般的に、「最適化」のトランザクション ログ領域の使用量...
「再構築」のトランザクション ログ領域の使用量より少量にな...
ただし、「最適化」処理の作業量による(断片化の度合が大き...
--「最適化」のトランザクション ログは、「一括ログ復旧モデ...
*注意事項 [#pc2c2765]
-旧式のI/Oサブシステムを使用している環境では、~
「インデックスの断片化」を修正する前に「ディスクの断片化...
-SANを使用している環境では、「ディスクの断片化」を修正す...
--「インデックスの断片化」はI/O処理能力に影響するため、~
「インデックス ページ」、「データ ページ」がデータ キャッ...
--SANでは、一般的に大容量のデータ キャッシュが提供される...
*参考情報 [#e492c2ff]
-Rebuilding SQL Server indexes using the ONLINE option~
https://www.mssqltips.com/sqlservertip/2361/rebuilding-sq...
-Microsoft Docs
--インデックス再構築と再構成の違い~
https://docs.microsoft.com/ja-jp/archive/blogs/jpsql/977
--SQL Server
---オンライン インデックス操作のガイドライン~
https://docs.microsoft.com/ja-jp/sql/relational-databases...
---パフォーマンスを向上させ、リソース使用率を削減するため...
https://docs.microsoft.com/ja-jp/sql/relational-databases...
----
Tags: [[:データアクセス]], [[:SQL Server]]
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>SQL Server]]
* 目次 [#u956a893]
#contents
*概要 [#k1b49bf6]
[[インデックス>SQL Server のインデックス]]の[[断片化>SQL ...
*監視 [#r4ac0f88]
「DBCC SHOWCONTIG」ステートメントで、「インデックスの断片...
(DBCC SHOWCONTIGは削除予定なので、sys.dm_db_index_physic...
**断片化の監視 [#qe662148]
-「DBCC SHOWCONTIG」ステートメントを使用することで、~
「インデックスの断片化」レベルを監視し、断片化の進んだイ...
-「DBCC SHOWCONTIG」ステートメントの「TABLERESULTS」オプ...
これをテーブルに定期的に書き込めば、時系列に「インデック...
-負荷の高いサーバで「DBCC SHOWCONTIG」ステートメントを実...
インデックスの「リーフ ページ」がスキャンされないようにし...
**実行結果 [#rfe6bb39]
-再構築したばかりの「クラスタ化インデックス」に対して、~
「DBCC SHOWCONTIG」ステートメントを実行した際の出力。
- スキャンされたページ数........................... : 52...
- スキャンされたエクステント数................ : 6604
- 切り替えられたエクステント数................ : 6603
- エクステントごとの平均ページ数............ : 8.0
- スキャン密度 [最善 :実際] ...................... : 99....
- 論理スキャン フラグメンテーション...... : 0.01%
- エクステント スキャン フラグメンテーション.... : 0.14%
- ページごとの平均空きバイト数............... : 10.5
- 平均ページ密度 (全体)............................. : 9...
-再構築したばかりの「非クラスタ化インデックス」
(「クラスタ化インデックス」が存在しない場合)に対して、~
「DBCC SHOWCONTIG」ステートメントを実行した際の出力。
- スキャンされたページ数............................ : 5...
- スキャンされたエクステント数.................. : 6913
- 切り替えられたエクステント数................. : 6912
- エクステントごとの平均ページ数............. : 8.0
- スキャン密度 [最善 :実際]........................ : 99...
- エクステント スキャン フラグメンテーション .... : 0.03%
- ページごとの平均空きバイト数................. : 397.0
- 平均ページ密度 (全体).............................. : ...
**出力結果 [#d08c7ded]
ここでは、「DBCC SHOWCONTIG」ステートメントで出力した情報...
「インデックスの断片化」レベルを確認する2つの方法につい...
***「スキャン密度(%)」で確認 [#j27804cb]
-「ページ分割」が発生すると、~
分割された一部の「リーフ レベル ページ」が、別の「エクス...
「インデックスの断片化」が進むと、正味のデータ量の割に「...
-この問題は、「スキャン密度(%)」で判断することができる...
「スキャン密度(%)」が小さくなった場合、「インデックス...
-「スキャン密度(%)」は、次の式で算出される。
|値|説明(式)|h
|スキャン密度(%)|最善のエクステント変更回数 / 現在のエ...
|最善のエクステント変更回数|すべての「ページ」が連続的に...
|現在のエクステント変更回数|実際のスキャン処理を実行して...
***「論理スキャン フラグメンテーション」で確認 [#p8a27259]
-「クラスタ化インデックス」の場合、~
「リーフ レベル ページ」の「データ ページ」中のデータが物...
しかし、「ページ分割」が発生すると、分割された一部の「デ...
物理的に離れた位置に格納されることがあるので、順序が不正...
-この問題は、「論理スキャン フラグメンテーション」で判断...
この値が大きくなった場合、「インデックスの断片化」が進ん...
この値はできるだけ0%に近い値にする。0 ~ 10%が許容範囲であ...
これを超えると、「インデックス スキャン」の性能が低下する...
|値|説明(式)|h
|論理スキャン フラグメンテーション(%)|物理的に順序正し...
|エクステント スキャン フラグメンテーション(%)|物理的...
*修正 [#e0c20d82]
**インデックスの再構築 (alter index rebuild) [#td4b0cd0]
再構築なので断片化の度合に響されず、All or Nothing。
-テーブル、インデックスの構造や制約がわからない場合でも、~
1つのステートメントでテーブルの全ての「再構築」ができる...
複数の「DROP INDEX」と「CREATE INDEX」を使用して「再構築...
-同時に、オプティマイザの使用する統計が更新される。
-オプションで「ページ密度」を変更することができる。
**再構成 (alter index reorganize) [#v09ecaad]
再構成なので断片化の度合に響され、キャンセル時点までの再...
-「リーフ レベル ページ」を物理的に順序正しく並べ替え、「...
-これにより、「インデックス スキャン」の性能が向上する。
-ただし、この方法は「再構築」の操作よりも劣る。
-期待した効果が得られない場合は、「再構築」が必要になる。
**比較 [#c19901b1]
***同時実行性 [#da3adf94]
-「再構築」
--処理中インデックス全体がロックされインデックスは使用不可
--ONLINEオプションを付与した場合は使用可だが、~
再構築を完了するためにかなり多くのリソースを使用する。
-「最適化」~
処理中ページのみロックされインデックスは使用可
***必要なデータ領域の空き容量 [#p9d58da8]
-「再構築」~
再構成よりも多い。
--「再構築」には、「データ ファイル」に十分な空き容量が必...
--必要な空き領域は、再構築するインデックス量に応じて変化...
--「クラスタ化インデックス」の場合、~
「必要な空き領域 = 1.2 * (平均行サイズ) * (行数)」が目安...
-「最適化」~
再構築よりも少ない。
***トランザクション ログ量の比較 [#q7000327]
-「再構築」
--インデックスの「ページ」のイメージをトランザクション ロ...
--このため、トランザクション ログ領域を大量に使用すること...
--必要なトランザクション ログ領域は、大まかに見積もって、...
--「ページ」数は、「DBCC SHOWCONTIG」ステートメントで確認...
--ただし、「再構築」のトランザクション ログは、~
「一括ログ復旧モデル」では記録されないので、必要に応じて...
-「最適化」
--一般的に、「最適化」のトランザクション ログ領域の使用量...
「再構築」のトランザクション ログ領域の使用量より少量にな...
ただし、「最適化」処理の作業量による(断片化の度合が大き...
--「最適化」のトランザクション ログは、「一括ログ復旧モデ...
*注意事項 [#pc2c2765]
-旧式のI/Oサブシステムを使用している環境では、~
「インデックスの断片化」を修正する前に「ディスクの断片化...
-SANを使用している環境では、「ディスクの断片化」を修正す...
--「インデックスの断片化」はI/O処理能力に影響するため、~
「インデックス ページ」、「データ ページ」がデータ キャッ...
--SANでは、一般的に大容量のデータ キャッシュが提供される...
*参考情報 [#e492c2ff]
-Rebuilding SQL Server indexes using the ONLINE option~
https://www.mssqltips.com/sqlservertip/2361/rebuilding-sq...
-Microsoft Docs
--インデックス再構築と再構成の違い~
https://docs.microsoft.com/ja-jp/archive/blogs/jpsql/977
--SQL Server
---オンライン インデックス操作のガイドライン~
https://docs.microsoft.com/ja-jp/sql/relational-databases...
---パフォーマンスを向上させ、リソース使用率を削減するため...
https://docs.microsoft.com/ja-jp/sql/relational-databases...
----
Tags: [[:データアクセス]], [[:SQL Server]]
ページ名: