Estructuras de montón

Un montón es una tabla que no tiene un índice agrupado. Los montones tienen una fila en sys.partitions, con index_id = 0 para cada partición que el montón utiliza. De forma predeterminada, un montón contiene una sola partición. Cuando un montón tiene varias particiones, cada partición incluye una estructure de montón que contiene los datos de esa partición específica. Por ejemplo, si un montón tiene cuatro particiones, existirán cuatro estructuras de montón, una en cada partición.

Dependiendo de los tipos de datos incluidos en el montón, cada estructura de montón tendrá una o más unidades de asignación para almacenar y administrar los datos de una partición específica. Como mínimo, cada montón dispondrá de una unidad de asignación IN_ROW_DATA por partición. El montón también dispondrá de una unidad de asignación LOB_DATA por partición si contiene columnas de objeto grande (LOB), así como una unidad de asignación ROW_OVERFLOW_DATA por unidad, si contiene columnas de longitud variable que superan 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.

La columna first_iam_page en la vista de sistema sys.system_internals_allocation_units señala la primera página IAM de la cadena de páginas IAM que administra el espacio asignado a la pila en una partición específica. SQL Server utiliza las páginas IAM para desplazarse por el montón. Las páginas de datos y las filas que se encuentran en ellas no están en ningún orden concreto y no están vinculadas. La única conexión lógica entre las páginas de datos es la información registrada en las páginas IAM.

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.

Los recorridos de tablas o las lecturas secuenciales de un montón se hacen recorriendo las páginas IAM para buscar las extensiones que almacenan las páginas de dicho montón. Como la IAM representa las extensiones en el mismo orden en el que se encuentran en los archivos de datos, ello significa que los recorridos secuenciales de un montón recorren secuencialmente cada archivo. Utilizar las páginas IAM para establecer la secuencia de recorrido también significa que las filas del montón no se devuelven normalmente en el orden en que se introdujeron.

La siguiente ilustración muestra cómo SQL Server Database Engine (Motor de base de datos de SQL Server) utiliza las páginas IAM para recuperar las filas de datos en un solo montón de partición.

Las páginas IAM recuperan datos en un solo montón con particiones