Saltar al contenido

¿Qué es el índice de almacén de columnas y en qué se diferencia de agrupado y no agrupado?

Esta es el arreglo más acertada que encomtrarás brindar, sin embargo estúdiala detenidamente y valora si es compatible a tu proyecto.

Solución:

Suponga que tiene una tabla como la siguiente con col1 como primario key

col1  col2  col3
1      2     3
4      5     6

El índice normal se almacenará como se muestra a continuación, asumiendo que una página solo puede contener una fila

   row1  1   2  3--page1-- all columns reside in one page
   row2  4   5  6--page2

así que cuando quiera leer algo como sum (col3), SQLServer necesitará leer la página 1 y la página 2 para obtener 3,6, eso es un costo de dos páginas.

Ahora, con índices de almacenamiento de columnas, la misma tabla se almacenará como se muestra a continuación

page1  page2   page3
1       2       3
4       5       6

Ahora, si desea hacer una suma de col3, solo tiene que leer una página (página3)

La ventaja de usar índices de almacenamiento de columnas es que puede tocar solo las páginas necesarias del disco. La memoria también se usa de manera eficiente, ya que no almacenará / leerá datos no deseados

El índice de almacén de columnas se explica muy bien aquí: http://www.patrickkeisler.com/2014/04/what-is-non-clustered-columnstore-index.html

Lo tradicional índice agrupado y no agrupado que mencionaste son ambos almacén de filas index, donde la base de datos almacena el índice fila por fila. El índice se distribuirá en varias particiones, por lo que incluso cuando seleccionamos solo una columna, la base de datos todavía tiene que escanear todas las particiones para obtener los datos, por lo que genera muchas E / S.

Columnstore index, por otro lado, almacena el índice columna por columna. Normalmente, esto tendrá todos los datos de una columna almacenados dentro de una partición, ya que todos los datos de una columna combinados no son tan grandes. Ahora, cuando seleccionamos 1 columna del índice, la base de datos puede devolver los datos de una partición, lo que reduce muchas E / S. Además, el índice de almacén de columnas a menudo tiene una relación de compresión significativa, por lo que la E / S es aún más eficiente y todo el índice se puede guardar en la memoria, lo que ayuda a que las consultas sean de 10 a 100 veces más rápidas.

El índice de almacén de columnas no siempre funciona mejor que el almacén de filas. El índice de almacén de columnas es adecuado para escenarios como el almacenamiento de datos y BI, donde los datos a menudo se procesan en masa, como para agregaciones. Sin embargo, funciona peor que el índice de almacén de filas en escenarios donde los datos a menudo se buscan en filas individuales.

Una cosa que vale la pena notar es que almacén de columnas no agrupado index bloquea su tabla para que no se modifique (pero hay algunas soluciones alternativas para cambiar los datos), mientras que almacén de columnas agrupado index todavía le permite editar los datos sin quitar o deshabilitar el índice.

Para obtener más información sobre este tema, consulte el artículo anterior y también intente leer los documentos de MSDN.

El índice de almacén de columnas en clúster es una característica nueva de SQL Server 2014. El índice de almacén de columnas permite que los datos se almacenen en un formato de columnas en lugar del almacenamiento tradicional basado en filas. Los índices de almacenamiento de columnas (no agrupados) se introdujeron originalmente en SQL 2012 para abordar el alto rendimiento de consultas en los requisitos de alto volumen típicos del almacenamiento de datos / informes.

Puntos principales:

  1. Almacena datos en una estructura de datos en columnas, lo que ayuda a leer más rápido. Almacena datos en formato comprimido y, por lo tanto, su costo total de E / S será mínimo.
  2. La estructura de datos del almacén de columnas es la misma estructura de datos donde los datos e indexan todo lo almacenado, a diferencia de los datos almacenados por separado y los índices almacenados por separado, etc.
  3. Será muy útil para la tabla de más columnas donde selecciona solo columnas limitadas diariamente, por ejemplo, si hay una tabla ProductSalesFact, normalmente selecciona para este producto cuál es el recuento de ventas, o para este trimestre cuáles son las ventas, etc., aunque tiene cientos de columnas, solo accede a dos columnas requeridas.

Mi blog sobre el índice de almacén de columnas que proporciona un estudio de rendimiento de 300 millones de registros con almacén de columnas vs almacén de filas

Why Clustered columnstore index in SQL Server 2014?

Enlace de MSDN para varias versiones de almacén de columnas y rutas:

https://msdn.microsoft.com/en-us/library/dn934994.aspx

Calificaciones y reseñas

Si entiendes que te ha resultado de utilidad este artículo, sería de mucha ayuda si lo compartieras con otros programadores y nos ayudes a difundir nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *