sys.pdw_nodes_column_store_row_groups (T-SQL)

Berlaku untuk:Azure Synapse Analytics AnalyticsPlatform System (PDW)

Menyediakan informasi indeks penyimpan kolom berkluster berdasarkan per segmen untuk membantu administrator membuat keputusan manajemen sistem di Azure Synapse Analytics. sys.pdw_nodes_column_store_row_groups memiliki kolom untuk jumlah total baris yang disimpan secara fisik (termasuk yang ditandai sebagai dihapus) dan kolom untuk jumlah baris yang ditandai sebagai dihapus. Gunakan sys.pdw_nodes_column_store_row_groups untuk menentukan grup baris mana yang memiliki persentase tinggi dari baris yang dihapus dan harus dibangun kembali.

Nama kolom Jenis data Deskripsi
object_id int ID tabel yang mendasar. Ini adalah tabel fisik pada simpul Komputasi, bukan object_id untuk tabel logis pada simpul Kontrol. Misalnya, object_id tidak cocok dengan object_id dalam sys.tables.

Untuk bergabung dengan sys.tables, gunakan sys.pdw_index_mappings.
index_id int ID indeks penyimpan kolom berkluster pada tabel object_id .
partition_number int ID partisi tabel yang menyimpan grup baris row_group_id. Anda dapat menggunakan partition_number untuk menggabungkan DMV ini ke sys.partitions.
row_group_id int ID grup baris ini. Ini unik dalam partisi.
dellta_store_hobt_id bigint hobt_id untuk grup baris delta, atau NULL jika jenis grup baris bukan delta. Grup baris delta adalah grup baris baca/tulis yang menerima rekaman baru. Grup baris delta memiliki status OPEN . Grup baris delta masih dalam format rowstore dan belum dikompresi ke format penyimpan kolom.
state kecil Nomor ID yang terkait dengan state_description.

1 = BUKA

2 = TERTUTUP

3 = TERKOMPRESI
state_desccription nvarchar(60) Deskripsi status persisten grup baris:

OPEN - Grup baris baca/tulis yang menerima rekaman baru. Grup baris terbuka masih dalam format rowstore dan belum dikompresi ke format penyimpan kolom.

CLOSED - Grup baris yang telah diisi, tetapi belum dikompresi oleh proses penggerak tuple.

TERKOMPRESI - Grup baris yang telah diisi dan dikompresi.
total_rows bigint Total baris yang disimpan secara fisik dalam grup baris. Beberapa mungkin telah dihapus tetapi masih disimpan. Jumlah maksimum baris dalam grup baris adalah 1.048.576 (heksadesimal FFFFF).
deleted_rows bigint Jumlah baris yang disimpan secara fisik dalam grup baris yang ditandai untuk dihapus.

Selalu 0 untuk grup baris DELTA.
size_in_bytes int Ukuran gabungan, dalam byte, dari semua halaman dalam grup baris ini. Ukuran ini tidak termasuk ukuran yang diperlukan untuk menyimpan metadata atau kamus bersama.
pdw_node_id int ID unik simpul Azure Synapse Analytics.
distribution_id int ID unik distribusi.

Keterangan

Mengembalikan satu baris untuk setiap grup baris penyimpan kolom untuk setiap tabel yang memiliki indeks penyimpan kolom berkluster atau non-kluster.

Gunakan sys.pdw_nodes_column_store_row_groups untuk menentukan jumlah baris yang disertakan dalam grup baris dan ukuran grup baris.

Ketika jumlah baris yang dihapus dalam grup baris bertambah menjadi persentase besar dari total baris, tabel menjadi kurang efisien. Bangun ulang indeks penyimpan kolom untuk mengurangi ukuran tabel, mengurangi I/O disk yang diperlukan untuk membaca tabel. Untuk membangun kembali indeks penyimpan kolom, gunakan opsi BANGUN ULANG dari pernyataan ALTER INDEX .

Penyimpan kolom yang dapat diperbarui terlebih dahulu menyisipkan data baru ke dalam grup baris TERBUKA , yang dalam format rowstore, dan juga kadang-kadang disebut sebagai tabel delta. Setelah grup baris terbuka penuh, statusnya berubah menjadi TERTUTUP. Grup baris tertutup dikompresi ke dalam format penyimpan kolom oleh penggerak tuple dan status berubah menjadi TERKOMPRESI. Penggerak tuple adalah proses latar belakang yang secara berkala bangun dan memeriksa apakah ada grup baris tertutup yang siap dikompresi ke dalam grup baris penyimpan kolom. Penggerak tuple juga membatalkan alokasi grup baris tempat setiap baris telah dihapus. Grup baris yang dibatalkan alokasinya ditandai sebagai DIHENTIKAN. Untuk segera menjalankan penggerak tuple, gunakan opsi REORGANIZE dari pernyataan ALTER INDEX .

Saat grup baris penyimpan kolom telah terisi, grup tersebut dikompresi, dan berhenti menerima baris baru. Saat baris dihapus dari grup terkompresi, baris tersebut tetap ada tetapi ditandai sebagai dihapus. Pembaruan untuk grup terkompresi diimplementasikan sebagai penghapusan dari grup terkompresi, dan sisipkan ke grup yang terbuka.

Izin

Memerlukan izin TAMPILKAN STATUS SERVER.

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

Contoh berikut menggabungkan tabel sys.pdw_nodes_column_store_row_groups ke tabel sistem lain untuk mengembalikan informasi tentang tabel tertentu. Kolom terhitung PercentFull adalah perkiraan efisiensi grup baris. Untuk menemukan informasi pada satu tabel, hapus tanda hubung komentar di depan klausa WHERE dan berikan nama tabel.

SELECT IndexMap.object_id,   
  object_name(IndexMap.object_id) AS LogicalTableName,   
  i.name AS LogicalIndexName, IndexMap.index_id, NI.type_desc,   
  IndexMap.physical_name AS PhyIndexNameFromIMap,   
  CSRowGroups.*,  
  100*(ISNULL(deleted_rows,0))/total_rows AS PercentDeletedRows   
FROM sys.tables AS t  
JOIN sys.indexes AS i  
    ON t.object_id = i.object_id  
JOIN sys.pdw_index_mappings AS IndexMap  
    ON i.object_id = IndexMap.object_id  
    AND i.index_id = IndexMap.index_id  
JOIN sys.pdw_nodes_indexes AS NI  
    ON IndexMap.physical_name = NI.name  
    AND IndexMap.index_id = NI.index_id  
JOIN sys.pdw_nodes_column_store_row_groups AS CSRowGroups  
    ON CSRowGroups.object_id = NI.object_id   
    AND CSRowGroups.pdw_node_id = NI.pdw_node_id  
    AND CSRowGroups.distribution_id = NI.distribution_id
    AND CSRowGroups.index_id = NI.index_id      
WHERE total_rows > 0
--WHERE t.name = '<table_name>'   
ORDER BY object_name(i.object_id), i.name, IndexMap.physical_name, pdw_node_id;  

Contoh Azure Synapse Analytics berikut menghitung baris per partisi untuk penyimpanan kolom berkluster serta berapa banyak baris dalam grup Baris Terbuka, Tertutup, atau Terkompresi:

SELECT
    s.name AS [Schema Name]
    ,t.name AS [Table Name]
    ,rg.partition_number AS [Partition Number]
    ,SUM(rg.total_rows) AS [Total Rows]
    ,SUM(CASE WHEN rg.State = 1 THEN rg.Total_rows Else 0 END) AS [Rows in OPEN Row Groups]
    ,SUM(CASE WHEN rg.State = 2 THEN rg.Total_Rows ELSE 0 END) AS [Rows in Closed Row Groups]
    ,SUM(CASE WHEN rg.State = 3 THEN rg.Total_Rows ELSE 0 END) AS [Rows in COMPRESSED Row Groups]
FROM sys.pdw_nodes_column_store_row_groups rg
  JOIN sys.pdw_nodes_tables pt
    ON rg.object_id = pt.object_id
    AND rg.pdw_node_id = pt.pdw_node_id
    AND pt.distribution_id = rg.distribution_id
  JOIN sys.pdw_table_mappings tm
    ON pt.name = tm.physical_name
  INNER JOIN sys.tables t
    ON tm.object_id = t.object_id
  INNER JOIN sys.schemas s
    ON t.schema_id = s.schema_id
GROUP BY s.name, t.name, rg.partition_number
ORDER BY 1, 2

Lihat Juga

Tampilan Katalog Gudang Data Azure Synapse Analytics dan Paralel
BUAT INDEKS PENYIMPAN KOLOM (Transact-SQL)
sys.pdw_nodes_column_store_segments (T-SQL)
sys.pdw_nodes_column_store_dictionaries (T-SQL)