Pregunta

Una de las nuevas características en SQL Server 2012 Codenamed Denali es el ÍNDICE DE LA COMULACIÓN.

Sé un buen poco sobre los índices regulares de tiendas de hileras antiguas, como la estructura del árbol B, las diferencias de almacenamiento entre el nivel de la hoja y las páginas de árbol B, los efectos de los campos incluidos, la optimización para usarlos, el orden de las claves, etc.

Tengo dificultad para obtener buena información sobre el interno de un índice de columna.

  • ¿Cómo está estructurado?
  • ¿Hay un árbol B? Alguna otra estructura en su lugar?
  • ¿Cómo se organizan los datos?
  • ¿Qué tipo de operadores específicos son los más adecuados para usarlo?
  • ¿Algún otro antipatrón que se evite al usarlos?

Mucho de lo que puedo descubrir sobre ellos son básicamente exactamente lo contrario de un índice "normal", es decir, no ordene las claves, no hay campos incluidos, solo no agrupados.

Cualquier idea es apreciada.

¿Fue útil?

Solución

Estructura de la tienda de columnas

Los datos de columnstore se almacenan físicamente en uno o mas segmentos (Unidades de asignación de LOB regulares) por columna, y también puede dividirse de la manera habitual. Cada segmento contiene aproximadamente un millón de filas de valores altamente comprimidos o referencias de valor (varias técnicas de compresión están disponibles). Una referencia de valor se vincula a una entrada en uno de hasta dos Diccionarios hash.

Los diccionarios son fijado en la memoria Durante la ejecución de la consulta, con ID de valor de datos del segmento que se observa en el diccionario cada vez que la ejecución requiere el valor de datos real (esta búsqueda se difiere el mayor tiempo posible por razones de rendimiento).

Los segmentos también tienen un registro de encabezado que contiene metadatos, como los valores mínimos y máximos almacenados en el segmento. La información del encabezado a menudo se puede utilizar para eliminar Las particiones completas del procesamiento en el momento de la ejecución. La información del registro del encabezado se almacena en la estructura de raíz de datos LOB habitual, por lo que eliminar un segmento significa que el motor de almacenamiento puede omitir la lectura de las páginas de datos de LOB del almacenamiento físico por completo. Maximizar el potencial de eliminación puede requerir diseño cuidadoso, incluyendo un dependencia En el orden de índice agrupado en el momento en que se construye el índice de la tienda de columnas.

Operadores de planes específicos

SQL Server 2012 presenta un nuevo modo de ejecución llamado modo de lotes. En este modo, se pasan paquetes de aproximadamente 1000 filas entre los operadores, lo que mejora significativamente la eficiencia de utilización del procesador. Dentro de cada paquete, los datos columnares se representan como un vector. No todos los operadores del plan admiten la operación del modo por lotes, pero los ejemplos de aquellos que sí incluyen escaneo de índice de la tienda de columnas, unión interna hash, compilación de tabla hash de lote, filtro de mapa de bits, agregado hash (no escalar agregados), filtrar y calcular escalar (para evaluación de proyección y expresión). Los planes de ejecución de consultas se han mejorado para mostrar el modo de ejecución estimado y real.

Anti-paternos

Hay una gran cantidad de restricciones en la primera versión, incluidas las restricciones en lo permitido tipos de datos. Los tipos más comunes son compatibles; Los tipos de datos no compatibles incluyen DECIMAL con una precisión mayor de 18 dígitos, (N)VARCHAR(MAX), UNIQUEIDENTIFIER, Tipos de clr, y (VAR)BINARY.

Uso de tipos de cuerdas, OUTER JOIN, IN, EXISTS, NOT IN, OR, UNION ALL Puede dar lugar a un rendimiento significativamente reducido (ejecución del modo de fila), a menos que se empleen soluciones alternativas que generalmente implican reescrituras de sintaxis inusuales como se muestra en los artículos vinculados en esta sección.

Más información

Remus Rusanu ha blogueado una gran visión general aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top