Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2016 (13.x) dan versi
yang lebih baru Azure SQL Database
Azure SQL Managed Instance SQL database
di Microsoft Fabric
Menyediakan informasi tingkat grup baris saat ini tentang semua indeks penyimpan kolom dalam database saat ini.
DMV ini memperluas sys.column_store_row_groups tampilan katalog.
| Nama kolom | Jenis data | Description |
|---|---|---|
object_id |
int | ID tabel yang mendasar. |
index_id |
int | ID indeks penyimpan kolom ini pada object_id tabel. |
partition_number |
int | ID partisi tabel yang menyimpan row_group_id. Anda dapat menggunakan partition_number untuk menggabungkan DMV ini 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 |
tinyint | Nomor ID terkait state_description.0 = INVISIBLE1= OPEN2 = CLOSED3 = COMPRESSED4 = TOMBSTONECOMPRESSED 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. Contohnya:Grup baris di penyimpan kolom adalah INVISIBLE saat data sedang dikompresi. Ketika pemadatan selesai, sakelar metadata mengubah status grup baris penyimpan kolom dari INVISIBLE ke COMPRESSED, dan status grup baris deltastore dari CLOSED ke TOMBSTONE.1
-
OPEN - Grup baris deltastore yang menerima baris baru. Grup baris terbuka masih dalam format rowstore dan belum dikompresi ke format penyimpan kolom.2
-
CLOSED - Grup baris di penyimpanan delta yang berisi jumlah baris maksimum, dan sedang menunggu proses penggerak tuple untuk memadatkannya ke penyimpanan kolom.3
-
COMPRESSED - 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.Untuk indeks penyimpan kolom noncluster, nilai ini tidak menyertakan baris yang dihapus yang disimpan dalam buffer penghapusan. Untuk informasi selengkapnya, dan untuk menemukan jumlah baris yang dihapus di buffer penghapusan, lihat sys.internal_partitions. |
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 |
tinyint | Alasan yang memicu COMPRESSED grup baris memiliki kurang dari jumlah baris maksimum.0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION1 - NO_TRIM2 - BULKLOAD3 - REORG4 - DICTIONARY_SIZE5 - MEMORY_LIMITATION6 - RESIDUAL_ROW_GROUP7 - STATS_MISMATCH8 - SPILLOVER9 - AUTO_MERGE |
trim_reason_desc |
nvarchar(60) |
trim_reasonDeskripsi .0
-
UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: Terjadi saat memutakhirkan 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 ditutup2
-
BULKLOAD: Ukuran batch beban massal membatasi jumlah baris.3
-
REORG: Pemadatan paksa sebagai bagian REORG dari perintah.4
-
DICTIONARY_SIZE: Ukuran kamus tumbuh terlalu besar untuk mengompresi 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 baris8
-
SPILLOVER: Hanya untuk penyimpan kolom pada tabel dalam memori. Jika ekor memiliki > 1 juta baris yang memenuhi syarat, baris batch terakhir yang tersisa dikompresi jika jumlahnya antara 100.000 dan 1 juta9
-
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_APPLICABLE2 - INDEX_BUILD3 - TUPLE_MOVER4 - REORG_NORMAL5 - REORG_FORCED6 - BULKLOAD7 - MERGE |
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 mengompresi 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 CLOSED grup baris 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 columnstore. |
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 = Tidak1 = Ya |
generation |
bigint | Pembuatan grup baris yang terkait dengan grup baris ini. |
created_time |
datetime2 | Waktu jam ketika grup baris ini dibuat.NULL - untuk indeks penyimpan kolom pada tabel dalam memori. |
closed_time |
datetime2 | Waktu jam ketika grup baris ini ditutup.NULL - untuk indeks penyimpan kolom pada tabel dalam memori. |
Results
Mengembalikan satu baris untuk setiap grup baris dalam database saat ini.
Permissions
CONTROL Memerlukan izin pada tabel dan VIEW DATABASE STATE izin pada database.
Izin untuk SQL Server 2022 dan yang lebih baru
Memerlukan izin VIEW DATABASE PERFORMANCE STATE pada database.
Examples
A. Menghitung 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 Mengoptimalkan pemeliharaan indeks untuk meningkatkan performa kueri dan mengurangi konsumsi sumber daya.
Contoh ini bergabung 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 WHERE klausa 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
INNER 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;