sys.dm_db_column_store_row_group_physical_stats (T-SQL)

Berlaku untuk: SQL Server 2016 (13.x) dan Azure SQL DatabaseAzure SQL Managed Instance yang lebih baru

Menyediakan informasi tingkat grup baris saat ini tentang semua indeks penyimpan kolom dalam database saat ini.

Ini memperluas sys.column_store_row_groups tampilan katalog (Transact-SQL).

Nama kolom Jenis data Deskripsi
object_id int ID tabel yang mendasar.
index_id int ID indeks penyimpan kolom ini pada tabel object_id .
partition_number int ID partisi tabel yang menyimpan row_group_id. Anda dapat menggunakan partition_number untuk menggabungkan DMV ini ke sys.partitions.
row_group_id int ID grup baris ini. Untuk tabel yang dipartisi, nilai unik dalam partisi.

-1 untuk ekor dalam memori.
delta_store_hobt_id bigint hobt_id untuk grup baris di penyimpanan delta.

NULL jika grup baris tidak berada di penyimpanan delta.

NULL untuk ekor tabel dalam memori.
state kecil Nomor ID terkait state_description.

0 = TIDAK TERLIHAT

1 = BUKA

2 = TERTUTUP

3 = TERKOMPRESI

4 = BATU NISAN

COMPRESSED adalah satu-satunya status yang berlaku untuk tabel dalam memori.
state_desc nvarchar(60) Deskripsi status grup baris:

0 - INVISIBLE -Grup baris yang sedang dibangun. Misalnya:
Grup baris di penyimpan kolom TIDAK TERLIHAT saat data sedang dikompresi. Ketika kompresi selesai, sakelar metadata mengubah status grup baris penyimpan kolom dari INVISIBLE ke COMPRESSED, dan status grup baris deltastore dari TERTUTUP ke TOMBSTONE.

1 - BUKA - Grup baris deltastore yang menerima baris baru. Grup baris terbuka masih dalam format rowstore dan belum dikompresi ke format penyimpan kolom.

2 - TERTUTUP - Grup baris di penyimpanan delta yang berisi jumlah baris maksimum, dan sedang menunggu proses penggerak tuple untuk memadatkannya ke penyimpanan kolom.

3 - DIKOMPRESI - Grup baris yang dikompresi dengan kompresi penyimpan kolom dan disimpan di penyimpan kolom.

4 - TOMBSTONE - Grup baris yang sebelumnya berada di deltastore dan tidak lagi digunakan.
total_rows bigint Jumlah baris yang disimpan secara fisik dalam grup baris. Untuk grup baris terkompresi. Menyertakan baris yang ditandai dihapus.
deleted_rows bigint Jumlah baris yang disimpan secara fisik dalam grup baris terkompresi yang ditandai untuk dihapus.

0 untuk grup baris yang berada di penyimpanan delta.
size_in_bytes bigint Ukuran gabungan, dalam byte, dari semua halaman dalam grup baris ini. Ukuran ini tidak termasuk ukuran yang diperlukan untuk menyimpan metadata atau kamus bersama.
trim_reason kecil Alasan yang memicu grup baris TERKOMPRESI memiliki kurang dari jumlah baris maksimum.

0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION

1 - NO_TRIM

2 - BEBAN MASSAL

3 - REORG

4 - DICTIONARY_SIZE

5 - MEMORY_LIMITATION

6 - RESIDUAL_ROW_GROUP

7 - STATS_MISMATCH

8 - SPILLOVER

9 - AUTO_MERGE
trim_reason_desc nvarchar(60) Deskripsi trim_reason.

0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: Terjadi saat meningkatkan dari versi SQL Server sebelumnya.

1 - NO_TRIM: Grup baris tidak dipangkas. Grup baris dikompresi dengan maksimum 1.048.576 baris. Jumlah baris bisa lebih sedikit jika subset baris dihapus setelah grup baris delta ditutup

2 - BULKLOAD: Ukuran batch beban massal membatasi jumlah baris.

3 - REORG: Pemadatan paksa sebagai bagian dari perintah REORG.

4 - DICTIONARY_SIZE: Ukuran kamus tumbuh terlalu besar untuk memadatkan semua baris bersama-sama.

5 - MEMORY_LIMITATION: Memori yang tersedia tidak cukup untuk memadatkan semua baris bersama-sama.

6 - RESIDUAL_ROW_GROUP: Ditutup sebagai bagian dari grup baris terakhir dengan baris < 1 juta selama operasi build indeks. Catatan: Build partisi dengan beberapa inti dapat menghasilkan lebih dari satu trim dari jenis ini.

7 - STATS_MISMATCH: Hanya untuk penyimpan kolom pada tabel dalam memori. Jika statistik salah ditunjukkan >= 1 juta baris yang memenuhi syarat di ekor tetapi kami menemukan lebih sedikit, grup baris terkompresi akan memiliki < 1 juta baris

8 - SPILLOVER: Hanya untuk columnstore pada tabel dalam memori. Jika ekor memiliki > 1 juta baris yang memenuhi syarat, baris batch terakhir yang tersisa akan dikompresi jika jumlahnya antara 100k dan 1 juta

9 - AUTO_MERGE: Operasi penggabungan Tuple Mover yang berjalan di latar belakang mengonsolidasikan satu atau beberapa grup baris ke dalam grup baris ini.
transition_to_compressed_state tinyint Memperlihatkan bagaimana grup baris ini dipindahkan dari deltastore ke status terkompresi di penyimpan kolom.

1- NOT_APPLICABLE

2 - INDEX_BUILD

3 - TUPLE_MOVER

4 - REORG_NORMAL

5 - REORG_FORCED

6 - BEBAN MASSAL

7 - GABUNGKAN
transition_to_compressed_state_desc nvarchar(60) 1 - NOT_APPLICABLE - operasi tidak berlaku untuk deltastore. Atau, grup baris dikompresi sebelum memutakhirkan ke SQL Server 2016 (13.x) dalam hal ini riwayat tidak dipertahankan.

2 - INDEX_BUILD - Pembuatan indeks atau pembangunan ulang indeks memadatkan grup baris.

3 - TUPLE_MOVER - Penggerak tuple yang berjalan di latar belakang memadatkan grup baris. Penggerak tuple terjadi setelah grup baris mengubah status dari OPEN ke CLOSED.

4 - REORG_NORMAL - Operasi reorganisasi, ALTER INDEX ... REORG, memindahkan grup baris TERTUTUP dari deltastore ke penyimpan kolom. Ini terjadi sebelum tuple-mover memiliki waktu untuk memindahkan grup baris.

5 - REORG_FORCED - Grup baris ini terbuka di deltastore dan dipaksa ke penyimpanan kolom sebelum memiliki sejumlah besar baris.

6 - BULKLOAD - Operasi beban massal memadatkan grup baris secara langsung tanpa menggunakan deltastore.

7 - MERGE - Operasi penggabungan mengonsolidasikan satu atau beberapa grup baris ke dalam grup baris ini lalu melakukan kompresi penyimpan kolom.
has_vertipaq_optimization bit Pengoptimalan VertiPaq meningkatkan kompresi penyimpan kolom dengan mengatur ulang urutan baris dalam grup baris untuk mencapai kompresi yang lebih tinggi. Pengoptimalan ini terjadi secara otomatis dalam banyak kasus. Ada dua kasus di mana pengoptimalan VertiPaq tidak digunakan:
a. ketika grup baris delta berpindah ke penyimpan kolom dan ada satu atau beberapa indeks nonclustered pada indeks penyimpan kolom - dalam hal ini pengoptimalan VertiPaq dilewati untuk meminimalkan perubahan pada indeks pemetaan;
b. untuk indeks penyimpan kolom pada tabel yang dioptimalkan memori.

0 = Tidak

1 = Ya
Generasi bigint Pembuatan grup baris yang terkait dengan grup baris ini.
created_time tanggalwaktu2 Waktu jam ketika grup baris ini dibuat.

NULL - untuk indeks penyimpan kolom pada tabel dalam memori.
closed_time tanggalwaktu2 Waktu jam ketika grup baris ini ditutup.

NULL - untuk indeks penyimpan kolom pada tabel dalam memori.

Hasil

Mengembalikan satu baris untuk setiap grup baris dalam database saat ini.

Izin

CONTROL Memerlukan izin pada tabel dan VIEW DATABASE STATE izin pada database.

Izin untuk SQL Server 2022 dan yang lebih baru

Memerlukan izin TAMPILKAN STATUS PERFORMA DATABASE pada database.

Contoh

J. Hitung fragmentasi untuk memutuskan kapan harus mengatur ulang atau membangun kembali indeks penyimpan kolom.

Untuk indeks penyimpan kolom, persentase baris yang dihapus adalah ukuran yang baik untuk fragmentasi dalam grup baris. Saat fragmentasi adalah 20% atau lebih, hapus baris yang dihapus. Untuk contoh selengkapnya, lihat Mengatur Ulang dan Membangun Ulang Indeks.

Contoh ini menggabungkan sys.dm_db_column_store_row_group_physical_stats dengan tabel sistem lain lalu menghitung Fragmentation kolom sebagai perkiraan efisiensi setiap grup baris dalam database saat ini. Untuk menemukan informasi pada satu tabel, hapus tanda hubung komentar di depan klausa WHERE dan berikan nama tabel.

SELECT i.object_id,   
    object_name(i.object_id) AS TableName,   
    i.name AS IndexName,   
    i.index_id,   
    i.type_desc,   
    CSRowGroups.*,  
    100*(ISNULL(deleted_rows,0))/NULLIF(total_rows,0) AS 'Fragmentation'
FROM sys.indexes AS i  
JOIN sys.dm_db_column_store_row_group_physical_stats 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;  

Lihat Juga

Tampilan Katalog Objek (Transact-SQL)
Tampilan Katalog (Transact-SQL)
Arsitektur Indeks Penyimpan Kolom
Mengkueri TANYA JAWAB Umum Katalog Sistem SQL Server
sys.columns (Transact-SQL)
sys.all_columns (T-SQL)
sys.computed_columns (T-SQL)
sys.column_store_dictionaries (T-SQL)
sys.column_store_segments (T-SQL)