sys.column_store_segments (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Bir columnstore indeksindeki her sütun segmenti için bir satır döndürür. Her sıralık grup için bir sütun segmenti vardır. Örneğin, 10 satır grubu ve 34 sütun içeren bir columnstore dizininin bu görünümde 340 satırı vardır.

Sütun adı Veri türü Description
partition_id bigint Bölüm kimliğini gösterir. Bir veritabanında benzersizdir.
hobt_id bigint Bu columnstore indeksine sahip tablo için heap veya B-tree indeksinin (HoBT) ID'si.
column_id int columnstore sütununun kimliği.
segment_id int Satır grubunun kimliği. Geriye dönük uyumluluk için, sütun adı sıralı grup kimliği olmasına rağmen segment_id olarak adlandırılmaya devam eder. kullanarak <hobt_id, partition_id, column_id, segment_id>bir segmenti benzersiz olarak tanımlayabilirsiniz.
version int Sütun segmenti formatının bir versiyonu.
encoding_type int O segment için kullanılan kodlama türü:

1 = VALUE_BASED - sözlüğü olmayan dıcıl/ikili (4'e benzer ve bazı iç varyasyonları var)

2 = VALUE_HASH_BASED - sözlükte ortak değerlere sahip dize olmayan/ikili sütun

3 = STRING_HASH_BASED - sözlükte ortak değerlere sahip dize/ikili sütun

4 = STORE_BY_VALUE_BASED - sözlüksüz dize/ikili

5 = STRING_STORE_BY_VALUE_BASED - sözlüksüz dize/ikili

Daha fazla bilgi için Açıklamalar bölümüne bakın.
row_count int Sıra grubundaki sıra sayısı.
has_nulls int Sütun kesiminin DLL'leri varsa 1.
base_id bigint Eğer kodlama tipi 1 kullanılıyorsa temel değer ID'si. Kodlama türü 1 kullanılmıyorsa - base_id 1 olarak ayarlanır.
magnitude float Eğer kodlama tip 1 kullanılıyorsa büyüklük. Kodlama türü 1 kullanılmıyorsa - magnitude 1 olarak ayarlanır.
primary_dictionary_id int 0 değeri küresel sözlüğü temsil eder. -1 değeri, bu sütun için oluşturulmuş küresel sözlük olmadığını gösterir.
secondary_dictionary_id int Sıfır olmayan bir değer, mevcut segmentteki bu sütunun yerel sözlüğüne işaret eder (örneğin, sıra grubu). -1 değeri, bu segment için yerel bir sözlük olmadığını gösterir.
min_data_id bigint Yalnızca dahili kullanım için.
max_data_id bigint Yalnızca dahili kullanım için.
null_value bigint Null'ları temsil etmek için kullanılan değer.
on_disk_size bigint Segmentin bayt cinsinden boyutu.
collation_id int Segmentin oluşturulduğu dönemdeki güncel derleme. İç bir ID'ye eşlemeler. Yalnızca dahili kullanım için.

Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği
min_deep_data varbinary(18) Segment elemesi için kullanılır. 1 Sadece iç kullanım için.

Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği
max_deep_data varbinary(18) Segment elemesi için kullanılır. 1 Sadece iç kullanım için.

Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği

1 Genişletilmiş bir veri türü kümesi (SQL Server 2022'de (16.x) kullanıma sunulan) min_deep_data için en düşük/en yüksek segment elemesini destekleyen Veritabanı Altyapısı sürümüne yükselttikten sonra, vemax_deep_data, columnstore dizini bir ALTER INDEX ... REBUILD veya CREATE INDEX ... WITH (DROP_EXISTING = ON) deyimi kullanılarak yeniden oluşturulana kadar olurNULL.

Açıklamalar

Columnstore segment kodlama türü, en düşük depolama maliyetine ulaşma hedefiyle segment verileri çözümlenerek Veritabanı Altyapısı tarafından seçilir. Veri çoğunlukla farklıysa, Veritabanı Motoru değer tabanlı kodlama kullanır. Veri çoğunlukla farklı değilse, Veritabanı Motoru hash tabanlı kodlama kullanır. Diziye dayalı ve değer tabanlı kodlama arasındaki seçim, depolanan veri türüyle ilgilidir; ister dizi veri ister ikili veri olsun. Tüm kodlamalar mümkün olduğunda bit paketleme ve run-length kodlamasından faydalanır.

Columnstore segmentinin elenmesi sayısal, tarih ve saat veri türlerine ve ikiden küçük veya buna eşit ölçekle datetimeoffset veri türüne uygulanır. SQL Server 2022'den (16.x) başlayarak, segment eleme özellikleri dize ve ikili veri türlerine, benzersiz belirleyici veri türüne ve ikiden büyük ölçek için datetimeoffset veri türüne genişler. Segment eleme , varchar(max), nvarchar(max)ve varbinary(max)gibi LOB veri türleri için geçerli değildir. Daha fazla bilgi için bkz . Columnstore dizinlerindeki yenilikler.

Permissions

Görünümde VIEW DEFINITION izin gereklidir. Kullanıcının da izni olmadığı sürece aşağıdaki sütunlar döndürülmüştürNULL: has_nulls, base_id, magnitude, min_data_id, max_data_id, ve null_value.SELECT

Katalog görünümlerindeki meta verilerin görünürlüğü, kullanıcının sahip olduğu veya kullanıcıya bazı izinlerin verildiği güvenli hale getirilebilir öğelerle sınırlıdır. Daha fazla bilgi için bkz. meta veri görünürlüğü yapılandırması .

Örnekler

Aşağıdaki sorgu, bir columnstore indeksinin segmentleri hakkında bilgi geri döndürür.

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;