[vColumnstoreDensity]
を使用して、列ストアインデックスの状態を監視しています。
奇妙に見えるインデックスが1つあることに気づきました。
私の理解では、列ストアインデックスは、次の行グループを開始する前に行グループを埋めます。最高のインデックスパフォーマンスを得るには、行グループが充実している方がよいでしょう。
以上のことをすべて言っても、理解に苦労しているテーブルが1つあります。最大のリソースクラスを使用してインデックスを再構築した後でも(ビルドプロセスに可能な最大量のメモリを提供するため)、[vColumnstoreDensity]
ビューには、このインデックスが部分的に完全な行グループの多くに分散していることが示されます。
COMPRESSED_rowgroup_count
4936
COMPRESSED_rowgroup_rows
2693512978
COMPRESSED_rowgroup_rows_MIN
468
COMPRESSED_rowgroup_rows_MAX
739443
COMPRESSED_rowgroup_rows_AVG
545687
編集:
これは、クラスター化された列ストアインデックスです。
列ストアグループが「カット」されているときに発生する拡張イベントがあります。イベントは column_store_index_build_process_segment
。このイベントには「トリム」の理由があり、2つの考えられるトリムの原因を探す必要があります。
もちろん、このイベントをキャプチャするには、インデックスのビルド中にXEセッションを設定する必要があります(リンクされた記事にその方法が示されています)。
また、ビルド後のアーティファクト、特にディクショナリを調べて、小さなセグメントに関連付けられているセカンダリディクショナリがすでにフルサイズ(16Mb)になっているかどうかを確認することもできます。これは、トリムの考えられる原因が完全な辞書であることを示しています。