Administrar el espacio utilizado por los objetos

Una página del Mapa de asignación de índices (IAM) asigna las extensiones en una parte de 4 GB de un archivo de base de datos utilizado por una unidad de asignación. Existen tres tipos de unidades de asignación:

  • IN_ROW_DATA

    Contiene una partición de un montón o un índice.

  • LOB_DATA

    Contiene tipos de datos de objetos grandes (LOB) como xml, varbinary(max) y varchar(max).

  • ROW_OVERFLOW_DATA

    Contiene datos de longitud variable almacenados en columnas varchar, nvarchar, varbinary o sql_variant que superan el límite de tamaño de fila de 8.060 bytes.

Cada partición de un montón o un índice contiene al menos una unidad de asignación IN_ROW_DATA. También puede contener una unidad de asignación LOB_DATA o ROW_OVERFLOW_DATA en función del esquema del montón o el índice. Para obtener más información acerca de las unidades de asignación, vea Organización de tablas e índices.

Una página IAM cubre un intervalo de 4 GB en un archivo, lo que equivale a la cobertura de una página GAM o SGAM. Si la unidad de asignación contiene extensiones de más de un archivo o más de un intervalo de 4 GB de un archivo, se vincularán varias páginas IAM en una cadena IAM. Por lo tanto, cada unidad de asignación tiene como mínimo una página IAM para cada archivo en el que tiene extensiones. También puede haber más de una página IAM en un archivo si el intervalo de las extensiones del archivo asignado a la unidad de asignación supera el intervalo que una sola página IAM puede registrar.

Páginas del Mapa de asignación de índices (IAM) que administran extensiones

Las páginas IAM se asignan según se necesitan para cada unidad de asignación y se ubican en el archivo de forma aleatoria. La vista de sistema sys.system_internals_allocation_units señala la primera página IAM de la unidad de asignación. Todas las páginas IAM de esa unidad de asignación se vinculan en una cadena.

Nota importanteImportante

La vista de sistema sys.system_internals_allocation_units se ha diseñado para uso interno y está sujeta a cambios, por lo que la compatibilidad no está garantizada.

Páginas IAM vinculadas en una cadena por unidad de asignación

Una página IAM tiene un encabezado que indica la extensión inicial del intervalo de extensiones asignado por la página IAM. La página IAM también tiene un mapa de bits grande en el que cada bit representa una extensión. El primer bit del mapa representa la primera extensión del intervalo, el segundo bit representa la segunda extensión, etc. Si un bit es 0, la extensión que representa no está asignada a la unidad de asignación propietaria de IAM. Si el bit es 1, la extensión que representa está asignada a la unidad de asignación propietaria de la página IAM.

Si SQL Server Database Engine (Motor de base de datos de SQL Server) necesita insertar una fila nueva y no hay espacio disponible en la página actual, utiliza las páginas IAM y PFS para buscar una página para la asignación o, en el caso de un montón o una página de texto o imagen, una página con espacio suficiente para contener la fila. Motor de base de datos utiliza las páginas IAM para buscar las extensiones asignadas a la unidad de asignación. Para cada extensión, Motor de base de datos busca las páginas PFS para ver si existe una página que se pueda utilizar. Cada página IAM y PFS cubre muchas páginas de datos, por lo que en una base de datos hay pocas páginas IAM y PFS. Esto significa que las páginas IAM y PFS están generalmente en el grupo de búferes de SQL Server y se pueden buscar con rapidez. Para los índices, el punto de inserción de una nueva fila lo establece la clave de índice. En este caso, el proceso de búsqueda descrito anteriormente no se produce.

Motor de base de datos sólo asigna una nueva extensión a una unidad de asignación cuando no puede encontrar rápidamente una página en una extensión existente con espacio suficiente para almacenar la fila que se va a insertar. Motor de base de datos asigna las extensiones entre las que están disponibles en el grupo de archivos siguiendo un algoritmo de asignación proporcional. Si un grupo de archivos tiene dos archivos, uno de los cuales tiene el doble de espacio disponible que el otro, asignará dos páginas del archivo con más espacio disponible por cada página asignada del otro archivo. Esto significa que los archivos de un grupo de archivos tienen un porcentaje de espacio utilizado similar.