Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al realizar operaciones de índice en línea se aplican las siguientes directrices:
Los índices agrupados se deben crear, volver a generar o eliminar fuera de línea cuando la tabla subyacente contiene los siguientes tipos de datos de objetos grandes (LOB):
image, ntext ytext.Los índices de las tablas temporales locales no se pueden crear, volver a generar ni quitar en línea. Esta restricción no se aplica a los índices de las tablas temporales globales.
Nota:
Las operaciones de índice en línea no están disponibles en todas las ediciones de MicrosoftSQL Server. Para obtener una lista de las características compatibles con las ediciones de SQL Server, vea Características compatibles con las ediciones de SQL Server 2014.
En la tabla siguiente se muestran las operaciones de índice que se pueden realizar en línea y los índices que se excluyen de estas operaciones en línea. También se incluyen restricciones adicionales.
| Operación de índice en línea | Índices excluidos | Otras restricciones |
|---|---|---|
| ALTERAR EL ÍNDICE RECONSTRUIR | Índice agrupado deshabilitado o vista indexada deshabilitada Índice XML Índice de almacén de columnas Índice de una tabla temporal local |
Especificar la palabra clave ALL puede provocar un error en la operación cuando la tabla contiene un índice excluido. Se aplican restricciones adicionales para volver a generar índices deshabilitados. Para obtener más información, vea Deshabilitar índices y restricciones. |
| CREAR ÍNDICE | Índice XML Índice clúster único inicial en una vista Índice de una tabla temporal local |
|
| CREAR ÍNDICE CON DROP_EXISTING | Índice agrupado deshabilitado o vista indexada deshabilitada Índice de una tabla temporal local Índice XML |
|
| ELIMINAR ÍNDICE | Índice deshabilitado Índice XML Índice no agrupado Índice de una tabla temporal local |
No se pueden especificar varios índices dentro de una sola instrucción. |
| ALTER TABLE AÑADIR CONSTRAINT (PRIMARY KEY o UNIQUE) | Índice de una tabla temporal local Índice agrupado |
Solo se permite una subclausa a la vez. Por ejemplo, no puede añadir ni eliminar restricciones de tipo PRIMARY KEY o UNIQUE en la misma instrucción ALTER TABLE. |
La tabla subyacente no se puede modificar, truncar ni quitar mientras se está procesando una operación de índice en línea.
El valor de configuración de la opción en línea (ON o OFF) especificado al crear o eliminar un índice agrupado se aplica a los índices no agrupados que deben ser reconstruidos. Por ejemplo, si el índice agrupado se compila en línea mediante CREATE INDEX WITH DROP_EXISTING, ONLINE=ON, todos los índices no agrupados asociados también se vuelven a crear en línea.
Al crear o recompilar un índice UNIQUE en línea, el generador de índices y una transacción de usuario simultánea pueden intentar insertar la misma clave, por lo que infringir la exclusividad. Si se inserta una fila escrita por un usuario en el nuevo índice (destino) antes de mover la fila original de la tabla de origen al nuevo índice, se producirá un error en la operación de índice en línea.
Aunque no es habitual, la operación de índice en línea puede provocar un interbloqueo cuando interactúa con las actualizaciones de la base de datos debido a las actividades de usuario o aplicación. En estos casos excepcionales, el motor de base de datos de SQL Server seleccionará la actividad de usuario o aplicación como víctima de interbloqueo.
Puede realizar operaciones DDL de índices en línea simultáneas en la misma tabla o vista solo cuando está creando varios índices no agrupados nuevos o reorganizando índices no agrupados. Se producirá un error en todas las operaciones de índice en línea que se realizan al mismo momento. Por ejemplo, no puede crear un nuevo índice en línea al volver a generar un índice existente en línea en la misma tabla.
No se puede realizar una operación en línea cuando un índice contiene una columna del tipo de objeto grande y, en la misma transacción, hay operaciones de actualización antes de esta operación en línea. Para solucionar este problema, coloque la operación en línea fuera de la transacción o colóquela antes de cualquier actualización de la transacción.
Consideraciones sobre el espacio en disco
Por lo general, los requisitos de espacio en disco son los mismos para las operaciones de índice en línea y sin conexión. Una excepción es un espacio en disco adicional requerido por el índice de asignación temporal. Este índice temporal se utiliza en operaciones de índice en línea que crean, reconstruyen o quitan un índice clúster. Quitar un índice agrupado en línea requiere tanto espacio como la creación de un índice agrupado en línea. Para obtener más información, consulte Requisitos de espacio en disco para las operaciones DDL de índice.
Consideraciones de rendimiento
Aunque las operaciones de índice en línea permiten la actividad simultánea de actualización de usuarios, las operaciones de índice tardarán más si la actividad de actualización es muy pesada. Normalmente, las operaciones de índice en línea serán más lentas que las operaciones de índice sin conexión equivalentes, independientemente del nivel de actividad de actualización simultánea.
Dado que las estructuras de origen y de destino se mantienen durante la operación de índice en línea, el uso de recursos para las transacciones de inserción, actualización y eliminación aumenta, potencialmente hasta un doble. Esto podría provocar una disminución del rendimiento y un mayor uso de recursos, especialmente el tiempo de CPU, durante la operación de índice. Las operaciones de índice en línea se registran por completo.
Aunque se recomiendan operaciones en línea, debe evaluar su entorno y requisitos específicos. Puede ser óptimo ejecutar operaciones de índice sin conexión. Al hacerlo, los usuarios tienen acceso restringido a los datos durante la operación, pero la operación finaliza más rápido y usa menos recursos.
En equipos multiprocesador que ejecutan SQL Server 2014, las instrucciones de índice pueden usar más procesadores para realizar las operaciones de examen y ordenación asociadas a la instrucción de índice igual que otras consultas. Puede usar la opción de índice MAXDOP para controlar el número de procesadores dedicados a la operación de índice en línea. De este modo, puede equilibrar los recursos que usa la operación de índice con los de los usuarios simultáneos. Para obtener más información, vea Configurar operaciones de índice en paralelo. Para obtener más información sobre las ediciones de SQL Server que admiten operaciones indexadas paralelas, vea Características compatibles con las ediciones de SQL Server 2014.
Dado que un bloqueo S-lock o Sch-M lock se mantiene en la fase final de la operación de índice, tenga cuidado al ejecutar una operación de índice en línea dentro de una transacción de usuario explícita, como un bloque BEGIN TRANSACTION... COMMIT. De esta manera el bloqueo se conserva hasta el final de la transacción y se impide la simultaneidad de usuarios.
La regeneración de índices en línea puede aumentar la fragmentación cuando se permite ejecutar con MAX DOP > 1 y ALLOW_PAGE_LOCKS = OFF como opciones. Para obtener más información, vea Cómo funciona: Recompilación de índices en línea: puede provocar una mayor fragmentación.
Consideraciones sobre el registro de transacciones
Las operaciones de índice a gran escala, realizadas sin conexión o en línea, pueden generar grandes cargas de datos que pueden hacer que el registro de transacciones se llene rápidamente. Para asegurarse de que la operación de índice se puede revertir, el registro de transacciones no se puede truncar hasta que se haya completado la operación de índice; sin embargo, se puede realizar una copia de seguridad del registro durante la operación de índice. Por lo tanto, el registro de transacciones debe tener suficiente espacio para almacenar las transacciones de la operación de índice y cualquier transacción de usuario simultánea durante la operación de índice. Para obtener más información, consulte Espacio en disco del registro de transacciones para las operaciones de índice.
Contenido relacionado
Cómo funcionan las operaciones de índice en línea