Quitar y volver a generar objetos grandes

Cuando se quitan o se vuelven a generar índices grandes, o bien se quitan o se truncan tablas grandes, el SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005) difiere las cancelaciones de asignación de páginas reales, y sus bloqueos asociados, hasta que se confirma una transacción. Esta implementación admite la confirmación automática y las transacciones explícitas en un entorno multiusuario, y se aplica a tablas e índices grandes que utilizan más de 128 extensiones.

El Database Engine (Motor de base de datos) evita los bloqueos de asignaciones que son necesarios para quitar objetos grandes dividiendo el proceso en dos fases independientes: lógica y física.

En la fase lógica, las unidades de asignación existentes utilizadas por la tabla o el índice se marcan para la cancelación de asignación y se bloquean hasta que se confirme la transacción. Con un índice agrupado que se ha quitado, las filas de datos se copian y se mueven a unidades de asignación nuevas creadas para almacenar un índice agrupado regenerado o un montón. (En el caso de una regeneración de índice, las filas de datos también se ordenan). Cuando se produce una reversión, sólo es necesario revertir esta fase lógica.

La fase física se produce una vez confirmada la transacción. Las unidades de asignación marcadas para la cancelación de asignación se quitan físicamente en lotes. Estas eliminaciones se controlan dentro de transacciones breves que se producen en segundo plano y no requieren muchos bloqueos.

Dado que la fase física se produce una vez confirmada la transacción, el espacio de almacenamiento de la tabla o índice podría seguir apareciendo como no disponible. Si se necesita este espacio para el crecimiento de la base de datos antes de que finalice la fase física, el Database Engine (Motor de base de datos) intenta recuperar espacio de las unidades de asignación marcadas para la cancelación de asignación. Para buscar el espacio utilizado actualmente por estas unidades de asignación, utilice la vista de catálogo sys.allocation_units.

Las operaciones de quitar diferidas no liberan el espacio asignado inmediatamente, y agregan costos de sobrecarga al Database Engine (Motor de base de datos). Por lo tanto, las tablas e índices que utilizan 128 o menos extensiones se quitan, se truncan o se regeneran igual que en SQL Server 2000. Esto significa que tanto la fase lógica como la física se producen antes de que se confirme la transacción.

Vea también

Conceptos

Otros recursos