Estructuras de ndices clúster

En SQL Server, los índices se organizan como árboles b. Las páginas de un árbol b de índice se llaman nodos del índice. El nodo superior del árbol b se llama nodo raíz. El nivel inferior de los nodos del índice se denomina nodos hoja. Los niveles del índice entre el nodo raíz y los nodos hoja se conocen en conjunto como niveles intermedios. En un índice agrupado, los nodos hoja contienen las páginas de datos de la tabla subyacente. El nodo raíz y los nodos intermedios incluyen páginas de índice que contienen filas de índice. Cada fila de índice contiene un valor clave y un puntero a una página de nivel intermedio en el árbol b, o bien a una fila de datos del nivel hoja del índice. Las páginas de cada nivel del índice se vinculan en una lista con vínculos dobles.

Los índices agrupados tienen una fila en sys.partitions, con index_id = 1 para cada partición utilizada por el índice. De forma predeterminada, un índice agrupado tiene una sola partición. Cuando un índice agrupado tiene múltiples particiones, cada partición tiene una estructura de árbol b que contiene los datos de esa partición específica. Por ejemplo, si un índice agrupado tiene cuatro particiones, hay cuatro estructuras de árbol b, una en cada partición.

En función de los tipos de datos del índice agrupado, cada estructura de índice agrupado tendrá una o más unidades de asignación en las que almacenar y administrar los datos de una partición específica. Como mínimo, cada índice agrupado tendrá una unidad de asignación IN_ROW_DATA por partición. El índice agrupado también tendrá una unidad de asignación LOB_DATA por partición si contiene columnas de objetos grandes (LOB). También tendrá una unidad de asignación ROW_OVERFLOW_DATA por partición si contiene columnas de longitud variable que superen el límite de tamaño de fila de 8.060 bytes. Para obtener más información acerca de las unidades de asignación, vea Organización de tablas e índices.

Las páginas de la cadena de datos y las filas que contienen se ordenan según el valor de la clave de índice agrupado. Todas las inserciones se hacen en el punto en el que el valor de clave de la fila insertada quede dentro de la secuencia de orden entre las filas existentes. Las colecciones de páginas del árbol b están delimitadas por punteros de página en la vista del sistema sys.system_internals_allocation_units.

Nota importanteImportante

La vista del sistema sys.system_internals_allocation_units sólo puede utilizarla internamente Microsoft SQL Server. La compatibilidad con versiones posteriores no está garantizada.

En un índice agrupado, la columna root_page de sys.system_internals_allocation_units apunta al nivel superior del índice agrupado para una partición específica. SQL Server baja en el índice para buscar la fila correspondiente a una clave de índice agrupado. Para buscar un intervalo de claves, SQL Server se desplaza por el índice hasta encontrar el valor de clave inicial del intervalo y después recorre las páginas de datos mediante los punteros anterior y siguiente. Para buscar la primera página de la cadena de páginas de datos, SQL Server sigue los punteros situados más a la izquierda desde el nodo raíz del índice.

En esta ilustración se muestra la estructura de un índice agrupado en una sola partición.

Niveles de un índice clúster