sys.column_store_row_groups (Transact-SQL)

適用対象: SQL Server 2012 (11.x) 以降 の Azure SQL Managed Instance

管理者がシステム管理を決定するのに役立つ、セグメントごとにクラスター化列ストア インデックス情報を提供します。 sys.column_store_row_groupsには、物理的に格納されている行の合計数 (削除済みとしてマークされているものを含む) の列と、削除済みとしてマークされた行数の列があります。 sys.column_store_row_groupsを使用して、削除された行の割合が高く、再構築する必要がある行グループを決定します。

列名 データ型 説明
object_id int このインデックスが定義されているテーブルの ID。
index_id int この列ストア インデックスを持つテーブルのインデックスの ID。
partition_number INT 行グループ row_group_id を保持するテーブル パーティションの ID。 partition_numberを使用して、この DMV を sys.partitions に参加させることができます。
row_group_id int この行グループに関連付けられている行グループ番号。 これはパーティション内で一意です。

-1 = メモリ内テーブルの末尾。
delta_store_hobt_id bigint デルタ ストア内の OPEN 行グループのhobt_id。

行グループがデルタ ストアにない場合は NULL。

メモリ内テーブルの末尾の NULL。
state tinyint state_descriptionに関連付けられている ID 番号。

0 = INVISIBLE

1 = OPEN

2 = CLOSED

3 = COMPRES Standard Edition D

4 = TO MB (メガバイト)STONE
state_description nvarchar(60) 行グループの永続的な状態の説明:

INVISIBLE -デルタ ストア内のデータから構築されるプロセス内の非表示の圧縮セグメント。 非表示の圧縮されたセグメントが完了するまで、読み取りアクションでデルタ ストアが使用されます。 その後、新しいセグメントが表示されると、ソース デルタ ストアは削除されます。

OPEN - 新しいレコードを受け入れる読み取り/書き込み行グループ。 開いている行グループは引き続き行ストア形式であり、列ストア形式に圧縮されていません。

CLO Standard Edition D - タプル ムーバー プロセスによってまだ圧縮されていない行グループ。

COMPRES Standard Edition D - 入力および圧縮された行グループ。
total_rows bigint 行グループに物理的に格納されている行の合計。 一部は削除されている可能性がありますが、まだ保存されています。 行グループ内の行の最大数は 1,048,576 (16 進数の FFFFF) です。
deleted_rows bigint 削除済みとしてマークされた行グループ内の行の合計数。 これはデルタ行グループの場合は常に 0 です。
size_in_bytes bigint DELTA 行グループと COLUMNSTORE 行グループの両方について、この行グループ内のすべてのデータ (メタデータや共有ディクショナリを含まない) のサイズ (バイト単位)。

解説

クラスター化列ストア インデックスまたは非クラスター化列ストア インデックスを持つテーブルごとに、列ストア行グループごとに 1 行を返します。

sys.column_store_row_groupsを使用して、行グループに含まれる行の数と行グループのサイズを決定します。

行グループ内の削除済みの行の数が合計行数に対して占める割合が高くなると、テーブルの効率が低下します。 テーブルのサイズが小さくなるよう列ストア インデックスを再構築して、テーブルを読み取るために必要なディスク I/O を削減します。 列ストア インデックスを再構築するには、ALTER INDEX ステートメントの REBUILD オプションを使用します。

更新可能な列ストアは、最初に OPEN 行グループに新しいデータを挿入します。これは行ストア形式であり、デルタ テーブルとも呼ばれます。 開いている行グループがいっぱいになると、その状態は CLO Standard Edition D変わります。 閉じた行グループは、タプル ムーバーによって列ストア形式に圧縮され、状態が COMPRES Standard Edition D に変わります。 タプル ムーバーは、定期的に起動し、列ストア行グループに圧縮する準備ができている閉じた行グループがあるかどうかをチェックするバックグラウンド プロセスです。 また、組ムーバーは、すべての行が削除された行グループの割り当てを解除します。 割り当て解除された行グループは TO MB (メガバイト)STONE としてマークされます。 タプル ムーバーをすぐに実行するには、ALTER INDEX ステートメントの REORGANIZE オプションを使用します。

列ストア行グループは、いっぱいになると圧縮され、新しい行の受け入れを停止します。 圧縮されたグループから行が削除されると、削除された行は、保持されますが、削除済みとしてマークされます。 圧縮されたグループに対する更新は、圧縮されたグループからの削除、および OPEN 状態のグループへの挿入として実装されます。

アクセス許可

ユーザーがテーブルに対するアクセス許可を持っている場合は VIEW DEFINITION 、テーブルの情報を返します。

カタログ ビューでのメタデータの可視性は、ユーザーが所有しているか、ユーザーに何らかのアクセス許可が付与されたセキュリティ保護可能なリソースに限定されます。 詳細については、「 Metadata Visibility Configuration」を参照してください。

次の例では、sys.column_store_row_groups テーブルを他のシステム テーブルに結合して、特定のテーブルに関する情報を返します。 計算済みの PercentFull 列は、行グループの効率の推定値を示します。 1 つのテーブルに関する情報を検索するには、WHERE 句の前にあるコメント ハイフンを削除し、テーブル名を指定します。

SELECT i.object_id, object_name(i.object_id) AS TableName,   
i.name AS IndexName, i.index_id, i.type_desc,   
CSRowGroups.*,   
100*(total_rows - ISNULL(deleted_rows,0))/total_rows AS PercentFull    
FROM sys.indexes AS i  
JOIN sys.column_store_row_groups AS CSRowGroups  
    ON i.object_id = CSRowGroups.object_id  
AND i.index_id = CSRowGroups.index_id   
--WHERE object_name(i.object_id) = '<table_name>'   
ORDER BY object_name(i.object_id), i.name, row_group_id;  

関連項目

オブジェクト カタログ ビュー (Transact-SQL)
カタログ ビュー (Transact-SQL)
SQL Server システム カタログに対するクエリに関してよく寄せられる質問
sys.columns (Transact-SQL)
sys.all_columns (Transact-SQL)
sys.computed_columns (Transact-SQL)
列ストア インデックスの説明
sys.column_store_dictionaries (Transact-SQL)
sys.column_store_segments (Transact-SQL)