Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
Se aplica a:SQL Server
Azure SQL Database
Instancia
administrada de Azure SQLBase de datos SQL en Microsoft Fabric
Devuelve una fila para cada segmento de columna en un índice de almacén de columnas. Hay un segmento de columna por columna por grupo de filas. Por ejemplo, un índice de almacén de columnas con 10 grupos de filas y 34 columnas tiene 340 filas en esta vista.
| Nombre de la columna | Tipo de datos | Descripción |
|---|---|---|
partition_id |
bigint | Indica el identificador de partición. Es único en una base de datos. |
hobt_id |
bigint | Identificador del montón o índice de árbol B (HoBT) de la tabla que tiene este índice de almacén de columnas. |
column_id |
int | Identificador de la columna de almacén de columnas. |
segment_id |
int | Identificador del grupo de filas. Por motivos de compatibilidad con versiones anteriores, se sigue llamando al nombre de columna segment_id aunque se trata del identificador del grupo de filas. Puede identificar de forma única un segmento mediante <hobt_id, partition_id, column_id, segment_id>. |
version |
int | Versión del formato de segmento de columna. |
encoding_type |
int | Tipo de codificación que se usa para ese segmento: 1 = VALUE_BASED: no string/binary sin diccionario (similar a 4 con algunas variaciones internas) 2 = VALUE_HASH_BASED: columna no string/binaria con valores comunes en el diccionario 3 = STRING_HASH_BASED: cadena/columna binaria con valores comunes en el diccionario 4 = STORE_BY_VALUE_BASED: no string/binary sin diccionario 5 = STRING_STORE_BY_VALUE_BASED: cadena/binario sin diccionario Para obtener más información, vea la sección Notas. |
row_count |
int | Número de filas del grupo de filas. |
has_nulls |
int | 1 si el segmento de columna tiene VALORES NUL. |
base_id |
bigint | Id. de valor base si se usa el tipo de codificación 1. Si no se usa el tipo de codificación 1, base_id se establece en -1. |
magnitude |
float | Magnitud si se usa el tipo de codificación 1. Si no se usa el tipo de codificación 1, magnitude se establece en -1. |
primary_dictionary_id |
int | Un valor de 0 representa el diccionario global. Un valor de -1 indica que no hay ningún diccionario global creado para esta columna. |
secondary_dictionary_id |
int | Un valor distinto de cero apunta al diccionario local de esta columna en el segmento actual (por ejemplo, el grupo de filas). Un valor de -1 indica que no hay ningún diccionario local para este segmento. |
min_data_id |
bigint | Solo para uso interno. |
max_data_id |
bigint | Solo para uso interno. |
null_value |
bigint | Valor usado para representar valores NULL. |
on_disk_size |
bigint | Tamaño del segmento en bytes. |
collation_id |
int | Intercalación actual cuando se creó el segmento. Se asigna a un identificador interno. Solo para uso interno. se aplica a: SQL Server 2022 (16.x) y versiones posteriores, Azure SQL Database e Instancia administrada de Azure SQL |
min_deep_data |
varbinary(18) | Se usa para la eliminación de segmentos.1 Solo para uso interno. se aplica a: SQL Server 2022 (16.x) y versiones posteriores, Azure SQL Database e Instancia administrada de Azure SQL |
max_deep_data |
varbinary(18) | Se usa para la eliminación de segmentos.1 Solo para uso interno. se aplica a: SQL Server 2022 (16.x) y versiones posteriores, Azure SQL Database e Instancia administrada de Azure SQL |
1 Después de actualizar a una versión del motor de base de datos que admite la eliminación de segmentos min/max para un conjunto expandido de tipos de datos (introducidos en SQL Server 2022 (16.x)), y min_deep_datamax_deep_data son hasta que el índice de almacén de columnas NULL se vuelve a generar mediante una ALTER INDEX ... REBUILD instrucción o CREATE INDEX ... WITH (DROP_EXISTING = ON) .
Comentarios
El motor de base de datos selecciona el tipo de codificación del segmento de almacén de columnas mediante el análisis de los datos del segmento con el objetivo de lograr el menor costo de almacenamiento. Si los datos son principalmente distintos, el Motor de base de datos usa la codificación basada en valores. Si los datos no son principalmente distintos, el Motor de base de datos usa la codificación basada en hash. La elección entre la codificación basada en cadenas y la codificación basada en valores está relacionada con el tipo de datos que se almacenan, ya sean datos de cadena o datos binarios. Todas las codificaciones aprovechan el empaquetado de bits y la codificación de longitud de ejecución siempre que sea posible.
La eliminación de segmentos de almacén de columnas se aplica a los tipos de datos numéricos, de fecha y hora, y al tipo de datos datetimeoffset con escala menor o igual que dos. A partir de SQL Server 2022 (16.x), las funcionalidades de eliminación de segmentos se expanden a tipos de datos binarios y de cadena, el tipo de datos uniqueidentifier y el tipo de datos datetimeoffset para la escala superior a dos. La eliminación de segmentos no se aplica a tipos de datos LOB como varchar(max), nvarchar(max)y varbinary(max). Para obtener más información, consulte Novedades de los índices de almacén de columnas.
Permisos
Se requiere el VIEW DEFINITION permiso en la vista. Las columnas siguientes devuelven NULL a menos que el usuario también tenga el SELECT permiso : has_nulls, base_id, magnitude, min_data_id, max_data_idy null_value.
La visibilidad de los metadatos en las vistas de catálogo se limita a los elementos protegibles y que son propiedad de un usuario o sobre los que el usuario ha recibido algún permiso. Para obtener más información, consulte Metadata Visibility Configuration.
Ejemplos
La consulta siguiente devuelve información acerca de los segmentos de un índice de almacén de columnas.
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;
Contenido relacionado
- Descripción de los índices de almacén de columnas
- Optimización del rendimiento con índices de almacén de columnas ordenados
- Vistas de catálogo de objetos (Transact-SQL)
- Vistas de catálogo (Transact-SQL)
- Consultar las preguntas más frecuentes (P+F) del catálogo del sistema de SQL Server
- sys.columns (Transact-SQL)
- sys.all_columns (Transact-SQL)
- sys.computed_columns (Transact-SQL)
- sys.column_store_dictionaries (Transact-SQL)