web-dev-qa-db-ja.com

「インデックスの断片化率」とは何パーセントですか?

インデックスの断片化の概念とそれを修正する方法についてはよく知っていますが、特定の項目がどれなのかよくわかりません。

インデックスの断片化を見ると、常にPercentageで報告されます。

  • そのパーセンテージは何パーセントですか?
4
Sean Long

これは、インデックスの場合は論理的な断片化、ヒープの場合はエクステントの断片化になります。 sys.dm_db_index_physical_stats に関するBOLリファレンスは、このトピックに関するかなり良い情報を実際に提供します。

論理的な断片化

これは、インデックスのリーフページ内の順不同ページの割合です。順不同ページとは、インデックスに割り当てられた次の物理ページが、現在のリーフページの次のページポインターが指すページではないページです。

範囲の断片化

これは、ヒープのリーフページ内の順不同エクステントの割合です。順不同エクステントとは、ヒープの現在のページを含むエクステントが、前のページを含むエクステントの後の物理的に次のエクステントではないエクステントです。

最大のパフォーマンスを得るには、avg_fragmentation_in_percentの値をできるだけゼロに近づける必要があります。ただし、0パーセントから10パーセントまでの値が許容される場合があります。再構築、再編成、再作成など、断片化を減らすすべての方法を使用して、これらの値を減らすことができます。インデックスの断片化の程度を分析する方法の詳細については、インデックスの再編成と再構築を参照してください。

上記で強調表示されているように、インデックスについて考えてみましょう。これは、「リーフページ内の順序の乱れたページの割合」です。インデックスページは二重にリンクされたリストになります。つまり、各ページは、それぞれのインデックスレベルで次のページと前のページを指します。これは、二重にリンクされたリストがどのように表示されるかを示す図です(説明のため)。

enter image description here

注:上記の画像はインターネットから無作為に抽出されたもので、単純な表現です。ただし、Aの次のポインタとFの前のポインタはありません。それがSQL Serverインデックスのリーフページがどのように見えるかということについて、混乱したくありませんでした。

この構造は、データの論理フローを表します。つまり、物理的な現実が何であるかに関係なく、次のページが表示されます。実際の物理的な次のページが、次のページが現在のリーフページによってポイントされているものと異なる場合、その論理的な断片化が関係します。

上記の定義を前提として、4つのインデックスページがあるとします。それらのインデックスページのうち4つのうち1つ次のページポインターはその隣の物理ページではありませんが、他の3つはその物理的な性質を持っています。その場合、断片化の割合は25%になります。もちろん、これは単純な例であり、実際には数千ページ未満のインデックスについては気にしません。しかし、うまくいけば、それにより、その数値が何を表しているのかが少し明確になります。

クラスター化インデックス構造非クラスター化インデックス構造 、および ヒープ構造 の良い読み方をいくつか示します。

11
Thomas Stringer

Grant Fritcheyの厚意により、インターネット上の他の場所で答えを見つけました。

「断片化の割合を見ると、外部の断片化を見ることができます。これは、不適切なストレージメカニズムを示している、順序が正しくないページの割合を意味します。」

http://ask.sqlservercentral.com/questions/6505/what-is-index-fragmentation-actually.html

つまり、全体のうち何ページが故障しているのかということです。

3
Sean Long