Aracılığıyla paylaş


sys.column_store_segments (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2012 (11.x) ve sonraki sürümler Azure SQL Managed Instance

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ütunlu bir tablo 340 satır döndürü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. Bir segmenti hobt_id <, partition_id, column_id>, <segment_id> kullanarak benzersiz şekilde 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 1 sütun segmenti null değerlere sahipse.
base_id bigint Eğer kodlama tipi 1 kullanılıyorsa temel değer ID'si. Eğer kodlama tipi 1 kullanılmıyorsa, base_id -1 olarak ayarlanır.
büyüklük float Eğer kodlama tip 1 kullanılıyorsa büyüklük. Kodlama tipi 1 kullanılmıyorsa, büyüklük -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 Sütun segmentinde minimum veri kimliği.
max_data_id bigint Sütun segmentinde maksimum veri kimliği.
null_value bigint Null'ları temsil etmek için kullanılan değer.
on_disk_size bigint Segmentin bayt cinsinden boyutu.
collation_id int SQL Server 2022 (16.x) ve sonrası sürümler için geçerlidir .
Segmentin oluşturulduğu dönemdeki güncel derleme. İç bir ID'ye eşlemeler. Şu anda sadece dahili ve geliştirme için değil.
min_deep_data varbinary(18) SQL Server 2022 (16.x) ve sonrası sürümler için geçerlidir .
Segment elemesi için kullanılır. 1 Sadece iç kullanım için.
max_deep_data varbinary(18) SQL Server 2022 (16.x) ve sonrası sürümler için geçerlidir .
Segment elemesi için kullanılır. 1 Sadece iç kullanım için.

1 SQL Server'ın dizinin min/maksimum segment elemesini destekleyen bir sürümüne (SQL Server 2022 (16.x ve sonrası) min_deep_data yükseltildikten sonra, max_deep_data columnstore indeksi yeniden oluşturulana kadar REBUILD veya DROP/CREATE kullanılarak bu durum devam NULL eder. Yeniden oluşturulduktan sonra, dizinin min/maksimum segment eliminasyonundan fayda sağlayabilecek veri türlerini içeren segmentler veri içerir.

Açıklamalar

Columnstore segment kodlama türü, Veritabanı Motoru tarafından en düşük depolama maliyetini elde etmek amacıyla segment verilerinin analiz edilmesiyle 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 segment elemesi, sayısal, tarih ve zaman veri türlerine ve ölçek ikiden küçük veya eşit datetimeoffset veri tipine uygulanır. SQL Server 2022'den (16.x) başlayarak, segment eleme özellikleri ikiden büyük ölçek için dize, ikili, guid veri türleri ve datetimeoffset veri türüne kadar uzanır. Segment eleme, (maxum) veri tipi uzunlukları gibi LOB veri tipleri için geçerli değildir.

Permissions

Tüm sütunlar en azından VIEW DEFINITION masada izin gerektirir. Kullanıcının izni de yoksa aşağıdaki sütunlar geri NULL döner: has_nulls, base_id, magnitudemin_data_idmax_data_idve .null_valueSELECT

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 ;
GO

Sonraki Adımlar