sys.column_store_segments (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Egy sor minden oszlopszegmenshez egy oszloptároló indexben. Minden sorcsoporthoz egy oszlopszegmens tartozik. Egy 10 sorcsoportot és 34 oszlopot tartalmazó oszlopcentrikus index például 340 sort tartalmaz ebben a nézetben.

Oszlop név Adattípus Description
partition_id bigint Jelzi a partíció azonosítóját. Az adatbázison belül egyedi.
hobt_id bigint A halom vagy B-fa index (HoBT) azonosítója annak a táblának, amely tartalmazza ezt az oszloptároló indexet.
column_id int Az oszlopcentrikus oszlop azonosítója.
segment_id int A sorcsoport azonosítója. A visszafelé kompatibilitás érdekében az oszlop nevét továbbra is segment_id-nek hívják, még akkor is, ha ez a sorcsoport azonosítója. A szegmenseket egyedileg azonosíthatja a következő használatával <hobt_id, partition_id, column_id, segment_id>: .
version int Az oszlopszegmens formátum változata.
encoding_type int Az adott szegmens kódolásának típusa:

1 = VALUE_BASED - nem string/bináris szótár nélkül (hasonló a 4-hez, néhány belső változattal)

2 = VALUE_HASH_BASED - nem string/bináris oszlop közös értékekkel a szótárban

3 = STRING_HASH_BASED - láncsor/bináris oszlop közös értékekkel a szótárban

4 = STORE_BY_VALUE_BASED - nem string/bináris szótár nélkül

5 = STRING_STORE_BY_VALUE_BASED - láncsor/bináris szótár nélkül

További információ: Megjegyzések szakasz.
row_count int A sorcsoportban lévő sorok száma.
has_nulls int 1, ha az oszlopszegmensben NULL-ek vannak.
base_id bigint Alapérték azonosító, ha 1-es típusú kódolást használnak. Ha nem használja az 1. kódolási típust, base_id akkor -1 értékre van állítva.
magnitude float Nagyság, ha 1-es típusú kódolást használnak. Ha nem használja az 1. kódolási típust, magnitude akkor -1 értékre van állítva.
primary_dictionary_id int 0 érték a globális szótárt jelöli. Egy -1 érték azt jelzi, hogy ehhez az oszlophoz nem hoztak létre globális szótárt.
secondary_dictionary_id int Egy nem nulla érték mutatja a helyi szótárt ezen oszlopnak a jelenlegi szegmensben (például a sorcsoportban). Egy -1 érték azt jelzi, hogy erre a szegmensre nincs helyi szótár.
min_data_id bigint Csak belső használatra.
max_data_id bigint Csak belső használatra.
null_value bigint Az érték, amelyet nullák képviselésére használnak.
on_disk_size bigint A szegmens mérete bájtokban.
collation_id int A jelenlegi összeállítás, amikor a szegmens létrejött. Belső azonosítóhoz igazít. Csak belső használatra.

A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziókra, az Azure SQL Database-ra és a felügyelt Azure SQL-példányra
min_deep_data varbinary(18) Szegmens kizárására használják. 1 Csak belső használatra.

A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziókra, az Azure SQL Database-ra és a felügyelt Azure SQL-példányra
max_deep_data varbinary(18) Szegmens kizárására használják. 1 Csak belső használatra.

A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziókra, az Azure SQL Database-ra és a felügyelt Azure SQL-példányra

1 Az adatbázismotor azon verziójára való frissítés után, amely támogatja a minimális/maximális szegmenselivételt egy bővített adattípuscsoport esetében (az SQL Server 2022-ben (16.x)), az min_deep_datamax_deep_data oszlopcentrikus index egy vagy CREATE INDEX ... WITH (DROP_EXISTING = ON) utasítás használatával ALTER INDEX ... REBUILD történő újraépítéséig tartNULL.

Megjegyzések

Az oszlopcentrikus szegmenskódolási típust az adatbázismotor választja ki a szegmensadatok elemzésével a legalacsonyabb tárolási költség elérése érdekében. Ha az adatok többnyire különállóak, az Adatbázis Motor értékalapú kódolást használ. Ha az adatok többnyire nem különállóak, az Adatbázis Motor hash-alapú kódolást használ. A string-alapú és értékalapú kódolás közötti választás attól függ, hogy milyen adat tárolt a tárolt, legyen az string vagy bináris adat. Minden kódolás lehetőség szerint kihasználja a bitcsomagolást és futáshosszú kódolást.

Az oszlopcentrikus szegmensek megszüntetése numerikus, dátum- és időadattípusokra, valamint a datetimeoffset adattípusra vonatkozik, amelynek mérete kisebb vagy egyenlő kettőnél. Az SQL Server 2022 -től kezdve (16.x) a szegmensek megszüntetése sztring- és bináris adattípusokra, a uniqueidentifier adattípusra és a kettőnél nagyobb skálázáshoz használt datetimeoffset adattípusra terjed ki. A szegmensek megszüntetése nem vonatkozik a LOB adattípusokra, például a varchar(max), az nvarchar(max) és a varbinary(max). További információ: Az oszlopcentrikus indexek újdonságai.

Permissions

A VIEW DEFINITION nézet engedélyére van szükség. A következő oszlopok akkor térnek vissza NULL , ha a felhasználónak is van SELECT engedélye: has_nulls, base_id, magnitude, min_data_id, max_data_idés null_value.

A katalógusnézetekben a metaadatok láthatósága olyan biztonságos adatokra korlátozódik, amelyek egy felhasználó tulajdonában vannak, vagy amelyeken a felhasználó engedélyt kapott. További információ: Metaadatok láthatóságának konfigurációja.

Példák

A következő lekérdezés információt ad vissza egy oszloptároló index szegmenseiről.

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;