Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op: SQL Server 2012 (11.x) en latere versies
Azure SQL Managed Instance
Geeft één rij terug voor elk kolomsegment in een columnstore-index. Er is één kolomsegment per kolom per rijgroep. Een tabel met 10 rijgroepen en 34 kolommen levert bijvoorbeeld 340 rijen op.
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
| partition_id | bigint | Geeft de partitie-ID aan. Is uniek in een database. |
| hobt_id | bigint | ID van de heap- of B-boomindex (HoBT) voor de tabel die deze kolomopslagindex bevat. |
| column_id | int | Id van de columnstore-kolom. |
| segment_id | int | Id van de rijgroep. Voor achterwaartse compatibiliteit blijft de kolomnaam segment_id genoemd, ook al is dit de rijgroep-ID. Je kunt een segment uniek identificeren met <hobt_id, partition_id, column_id>, <segment_id>. |
| version | int | Versie van het kolomsegmentformaat. |
| encoding_type | int | Type codering die voor dat segment wordt gebruikt: 1 = VALUE_BASED - niet-string/binair zonder woordenboek (vergelijkbaar met 4 met enkele interne variaties) 2 = VALUE_HASH_BASED - niet-string/binaire kolom met gemeenschappelijke waarden in het woordenboek 3 = STRING_HASH_BASED - string/binaire kolom met gemeenschappelijke waarden in woordenboek 4 = STORE_BY_VALUE_BASED - niet-string/binair zonder woordenboek 5 = STRING_STORE_BY_VALUE_BASED - string/binair zonder woordenboek Zie de sectie Opmerkingen voor meer informatie. |
| row_count | int | Aantal rijen in de rijgroep. |
| has_nulls | int | 1 als het kolomsegment nullwaarden heeft. |
| base_id | bigint | Basiswaarde-ID als coderingstype 1 wordt gebruikt. Als codering type 1 niet wordt gebruikt, wordt base_id ingesteld op -1. |
| grootte | float | Grootte als codering type 1 wordt gebruikt. Als codering type 1 niet wordt gebruikt, wordt de grootte ingesteld op -1. |
| primary_dictionary_id | int | Een waarde van 0 vertegenwoordigt het globale woordenboek. Een waarde van -1 geeft aan dat er geen globaal woordenboek voor deze kolom is aangemaakt. |
| secondary_dictionary_id | int | Een niet-nul waarde wijst naar het lokale woordenboek voor deze kolom in het huidige segment (bijvoorbeeld de rijgroep). Een waarde van -1 geeft aan dat er voor dit segment geen lokaal woordenboek is. |
| min_data_id | bigint | Minimale data-ID in het kolomsegment. |
| max_data_id | bigint | Maximale data-ID in het kolomsegment. |
| null_value | bigint | Waarde die wordt gebruikt om nullen weer te geven. |
| on_disk_size | bigint | Grootte van het segment in bytes. |
| collation_id | int |
Van toepassing op SQL Server 2022 (16.x) en later. Huidige verzameling toen het segment werd aangemaakt. Kaarten naar een interne ID. Momenteel alleen intern en niet voor ontwikkeling. |
| min_deep_data | varbinair(18) |
Van toepassing op SQL Server 2022 (16.x) en later. Gebruikt voor segmenteliminatie. 1 Alleen voor intern gebruik. |
| max_deep_data | varbinair(18) |
Van toepassing op SQL Server 2022 (16.x) en later. Gebruikt voor segmenteliminatie. 1 Alleen voor intern gebruik. |
1 Na een upgrade naar een versie van SQL Server die string min/max segmenteliminatie ondersteunt (SQL Server 2022 (16.x) en later), min_deep_data en max_deep_data dat blijft zo NULL tot na de herbouw van de columnstore-index, met een REBUILD of DROP/CREATE. Na een rebuild zullen de segmenten die datatypes bevatten die baat kunnen hebben bij string-min/max-segmenteliminatie data bevatten.
Opmerkingen
Het columnstore-segmentcoderingstype wordt door de Database Engine geselecteerd met als doel de laagste opslagkosten te behalen door de segmentgegevens te analyseren. Als data grotendeels verschillend is, gebruikt de Database Engine waardegebaseerde codering. Als data meestal niet onderscheidend is, gebruikt de Database Engine hash-gebaseerde codering. De keuze tussen string-gebaseerde en waardegebaseerde codering hangt samen met het type data dat wordt opgeslagen, of het nu stringdata of binaire data is. Alle coderingen maken waar mogelijk gebruik van bitpacking en run-length codering.
Columnstore-segmenteliminatie geldt voor numerieke, datum- en tijddatatypes, en het datetimeoffset-datatype met schaal kleiner dan of gelijk aan twee. Vanaf SQL Server 2022 (16.x) kunnen segmentuitschakelingsmogelijkheden worden uitgebreid naar tekenreeksen, binaire, GUID-gegevenstypen en het gegevenstype datetimeoffset voor schaal groter dan twee. Segmenteliminatie is niet van toepassing op LOB-datatypes zoals de (maximale) datatypelengtes.
Permissions
Alle kolommen vereisen minimaal VIEW DEFINITION toestemming in de tabel. De volgende kolommen geven terug, NULL tenzij de gebruiker ook toestemming heeft SELECT : has_nulls, base_id, magnitude, , min_data_id, max_data_iden null_value.
De zichtbaarheid van de metagegevens in catalogusweergaven is beperkt tot beveiligbare items waarvan een gebruiker eigenaar is of waarvoor de gebruiker een bepaalde machtiging heeft gekregen. Zie Zichtbaarheidsconfiguratie voor metagegevensvoor meer informatie.
Voorbeelden
De volgende query geeft informatie terug over segmenten van een columnstore-index.
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
Volgende stappen
- objectcatalogusweergaven (Transact-SQL)
- catalogusweergaven (Transact-SQL)
- query's uitvoeren op de veelgestelde vragen over sql Server System Catalog
- sys.columns (Transact-SQL)
- sys.all_columns (Transact-SQL)
- sys.computed_columns (Transact-SQL)
- Handleiding voor Columnstore-indexen
- sys.column_store_dictionaries (Transact-SQL)