sys.column_store_segments (T-SQL)

Berlaku untuk: SQL Server 2012 (11.x) dan Azure SQL Managed Instance yang lebih baru

Mengembalikan satu baris untuk setiap segmen kolom dalam indeks penyimpan kolom. Ada satu segmen kolom per kolom per grup baris. Misalnya, tabel dengan 10 grup baris dan 34 kolom mengembalikan 340 baris.

Nama kolom Jenis data Deskripsi
partition_id bigint Menunjukkan ID partisi. Unik dalam database.
hobt_id bigint ID indeks timbunan atau pohon B (HoBT) untuk tabel yang memiliki indeks penyimpan kolom ini.
column_id int ID kolom penyimpan kolom.
segment_id int ID grup baris. Untuk kompatibilitas mundur, nama kolom terus dipanggil segment_id meskipun ini adalah ID grup baris. Anda dapat mengidentifikasi segmen secara unik menggunakan <hobt_id, partition_id, column_id>, <segment_id>.
versi int Versi format segmen kolom.
encoding_type int Jenis pengodean yang digunakan untuk segmen tersebut:

1 = VALUE_BASED - non-string/biner tanpa kamus (mirip dengan 4 dengan beberapa variasi internal)

2 = VALUE_HASH_BASED - kolom non-string/biner dengan nilai umum dalam kamus

3 = STRING_HASH_BASED - kolom string/biner dengan nilai umum dalam kamus

4 = STORE_BY_VALUE_BASED - non-string/biner tanpa kamus

5 = STRING_STORE_BY_VALUE_BASED - string/biner tanpa kamus

Untuk informasi selengkapnya, lihat bagian Keterangan.
row_count int Jumlah baris dalam grup baris.
has_nulls int 1 jika segmen kolom memiliki nilai null.
base_id bigint ID nilai dasar jika pengodean tipe 1 sedang digunakan. Jika pengodean tipe 1 tidak digunakan, base_id diatur ke -1.
Besarnya float Besaran jika pengodean tipe 1 sedang digunakan. Jika pengodean tipe 1 tidak digunakan, besaran diatur ke -1.
primary_dictionary_id int Nilai 0 mewakili kamus global. Nilai -1 menunjukkan bahwa tidak ada kamus global yang dibuat untuk kolom ini.
secondary_dictionary_id int Nilai bukan nol menunjuk ke kamus lokal untuk kolom ini di segmen saat ini (misalnya, grup baris). Nilai -1 menunjukkan bahwa tidak ada kamus lokal untuk segmen ini.
min_data_id bigint ID data minimum di segmen kolom.
max_data_id bigint ID data maksimum di segmen kolom.
null_value bigint Nilai yang digunakan untuk mewakili null.
on_disk_size bigint Ukuran segmen dalam byte.
collation_id int Berlaku untuk SQL Server 2022 (16.x) dan yang lebih baru.
Kolatasi saat ini ketika segmen dibuat. Peta ke ID internal. Saat ini hanya internal dan bukan untuk pengembangan.
min_deep_data varbinary(18) Berlaku untuk SQL Server 2022 (16.x) dan yang lebih baru.
Digunakan untuk eliminasi segmen.1 Hanya untuk penggunaan internal.
max_deep_data varbinary(18) Berlaku untuk SQL Server 2022 (16.x) dan yang lebih baru.
Digunakan untuk eliminasi segmen.1 Hanya untuk penggunaan internal.

1 Setelah memutakhirkan ke versi SQL Server yang mendukung penghapusan segmen string min/maks (SQL Server 2022 (16.x) dan yang lebih baru), min_deep_data dan max_deep_data akan NULL sampai setelah indeks penyimpan kolom dibangun kembali, menggunakan REBUILD atau DROP/CREATE. Setelah dibangun kembali, segmen yang berisi jenis data yang dapat memperoleh manfaat dari penghapusan segmen string min/maks akan berisi data.

Keterangan

Jenis pengodean segmen penyimpan kolom dipilih oleh Mesin Database dengan tujuan mencapai biaya penyimpanan terendah, dengan menganalisis data segmen. Jika data sebagian besar berbeda, Mesin Database menggunakan pengodean berbasis nilai. Jika data sebagian besar tidak berbeda, Mesin Database menggunakan pengodean berbasis hash. Pilihan antara pengodean berbasis string dan berbasis nilai terkait dengan jenis data yang disimpan, baik data string atau data biner. Semua pengodean memanfaatkan pengodean bit-packing dan run-length jika memungkinkan.

Penghapusan segmen penyimpan kolom berlaku untuk jenis data numerik, tanggal, dan waktu, dan jenis data datetimeoffset dengan skala kurang dari atau sama dengan dua. Dimulai di SQL Server 2022 (16.x), kemampuan eliminasi segmen diperluas ke jenis data string, biner, guid, dan datetimeoffset untuk skala yang lebih besar dari dua. Penghapusan segmen tidak berlaku untuk jenis data LOB seperti panjang jenis data (maks).

Izin

Semua kolom memerlukan setidaknya VIEW DEFINITION izin pada tabel. Kolom berikut mengembalikan NULL kecuali pengguna juga memiliki SELECT izin: has_nulls, , base_id, magnitudemin_data_id, max_data_id, dan null_value.

Visibilitas metadata dalam tampilan katalog terbatas pada keamanan yang dimiliki pengguna, atau di mana pengguna diberikan beberapa izin. Untuk informasi selengkapnya, lihat Konfigurasi Visibilitas Metadata.

Contoh

Kueri berikut mengembalikan informasi tentang segmen indeks penyimpan kolom.

SELECT i.name, p.object_id, p.index_id, i.type_desc,
    COUNT(*) AS number_of_segments
FROM sys.column_store_segments AS s
INNER JOIN sys.partitions AS p
    ON s.hobt_id = p.hobt_id
INNER JOIN sys.indexes AS i
    ON p.object_id = i.object_id
WHERE i.type = 5 OR i.type = 6
GROUP BY i.name, p.object_id, p.index_id, i.type_desc ;
GO

Langkah berikutnya