INTRODUCCIÓN.
Al cambiar datos, la base de datos y sus índices se fragmentan. A medida que los índices se fragmentan, la recuperación ordenada de datos se vuelve menos eficiente. La recuperación de datos ineficiente reduce el rendimiento de la base de datos.
ENTENDER LOS DIFERENTES TIPOS DE FRAGMENTACIÓN
Hay varios tipos de fragmentación que pueden ocurrir. Estos tipos de fragmentación afectan el rendimiento de la base de datos y el uso del espacio en disco. Existen problemas de orden lógico y densidad de páginas en tablas e índices dentro de las bases de datos. Las herramientas de desfragmentación a nivel del sistema operativo no pueden resolver estos problemas. La razón es que la fragmentación existe dentro de los archivos, en lugar de a nivel de archivo en sí.
FRAGMENTACIÓN DE ARCHIVOS A NIVEL DE SISTEMA OPERATIVO
Al realizar eliminaciones e inserciones a lo largo del tiempo, las páginas se fragmentan debido a que la secuencia física de las páginas de datos ya no coincide con su orden lógico. Esta fragmentación ocurre en el nivel de asignación de archivos. Las herramientas del sistema pueden abordar esta fragmentación. En sistemas más grandes, como una red de área de almacenamiento (SAN), el subsistema de disco mantiene automáticamente niveles bajos de fragmentación. Para sistemas de tamaño pequeño a mediano sin SAN, ejecute una herramienta para la desfragmentación del sistema antes de abordar la fragmentación del orden lógico y la densidad de páginas dentro de las bases de datos.
FRAGMENTACIÓN DE ORDEN LÓGICO
La fragmentación del orden lógico, también conocida como fragmentación externa dentro de las bases de datos, es como la fragmentación de archivos a nivel del sistema operativo. Al eliminar, insertar y cambiar datos a lo largo del tiempo, un índice puede hacer que las páginas estén desordenadas. En ese caso, la siguiente página lógica no es la misma que la siguiente página física.
FRAGMENTACIÓN DE DENSIDAD DE PÁGINA
La fragmentación de densidad de página, también conocida como fragmentación interna, ocurre cuando las páginas se dividen para dejar espacio para la información agregada a una página. En ese caso, puede que quede demasiado espacio libre en las páginas. Este espacio adicional puede hacer que las instancias de la base de datos lean más páginas de las necesarias para realizar ciertas tareas. Es necesario desfragmentar el nivel hoja de un índice para que el orden físico de las páginas coincida con el orden lógico de izquierda a derecha de las páginas hoja. Las páginas hoja de un índice agrupado contienen los datos de la tabla. Este proceso mejora el rendimiento de la exploración de índices y de todas las actividades de recuperación de datos.
EJEMPLOS DE FRAGMENTACIÓN.
Considere el caso cuando hay dos páginas de datos para una tabla con un índice agrupado. Los datos están ordenados y las páginas están llenas.
La siguiente figura muestra eso. Inserte una nueva fila con una clave principal de «5». Dado que es un índice agrupado, inserte la nueva fila en orden. Debido a que la página de destino está lo suficientemente llena como para que la nueva fila no quepa, la instancia de la base de datos divide la página aproximadamente por la mitad e inserta nuevos datos en la nueva página. La siguiente figura muestra eso. Ahora, el orden lógico del índice no coincide con el orden físico. El índice se ha fragmentado.
¿CÓMO DESFRAGMENTAR LOS ÍNDICES?
Es posible desfragmentar tablas e índices reconstruyendo y reorganizando.
RECONSTRUIR
El tipo de reconstrucción de desfragmentación utiliza el comando «DBCC DBREINDEX» para reconstruir los índices en las tablas. La operación de reconstrucción crea páginas nuevas y contiguas. Puede ser posible reconstruir en línea. Eso permite el acceso a las tablas antes de que finalice la operación. Sin embargo, elegir reconstruir en línea requiere más recursos (es decir, espacio en disco, CPU y memoria) y puede ralentizar el rendimiento.
REORGANIZAR
El tipo de desfragmentación de reorganización usa el comando «DBCC INDEXDEFRAG» para reordenar las páginas de hoja del índice en el lugar. Este proceso es como una especie de burbuja. Aunque las páginas se reordenan físicamente, es posible que no sean contiguas dentro del archivo de datos. Este problema puede causar índices intercalados, que deben reconstruirse para almacenarlos en páginas contiguas.
EJEMPLO: DESFRAGMENTAR UN ÍNDICE
Considere un ejemplo simplificado de páginas después de muchas inserciones, actualizaciones y eliminaciones. La siguiente figura muestra eso. La numeración de páginas representa la secuencia lógica de las páginas. Sin embargo, la secuencia física, como se muestra en la figura de izquierda a derecha, no coincide con la secuencia lógica.
La siguiente figura ilustra varias pasadas durante el proceso de desfragmentación de reorganización. Este proceso provoca el reordenamiento de las páginas físicas intercambiando la primera página lógica con la primera página física, y luego la segunda página lógica intercambiada con la segunda página física, y así sucesivamente.
- En el primer paso, la instancia de la base de datos encuentra la primera página física («4») y la primera página lógica («1»). Luego, la instancia de la base de datos intercambia estas páginas en una transacción discreta.
- En la segunda pasada, la instancia de la base de datos intercambia la siguiente página física («7») con la siguiente página lógica («2»).
- En el tercer paso, la instancia de la base de datos intercambia la siguiente página física («4») con la siguiente página lógica («3»).
- En el cuarto paso, la instancia de la base de datos intercambia la siguiente página física («5») con la siguiente página lógica («4»).
La clasificación ahora está completa, ya que todas las páginas físicas restantes coinciden con sus posiciones lógicas.
¿CÓMO COMPACTAR DATOS?
Además de reordenar las páginas hoja del índice, es posible compactar los datos en las páginas utilizando el valor del factor de relleno original especificado para la tabla y luego eliminar las páginas vacías. Considere las siguientes condiciones relacionadas con esta fase de compactación:
- Omita por completo la compactación al inhibir los bloqueos de página para el índice.
- Hay varios algoritmos integrados en la fase de compactación para detener el trabajo innecesario. Por ejemplo, si la primera página del índice está vacía y todas las demás páginas están llenas, la instancia de la base de datos no mueve repetidamente todos los datos una página hacia adelante.
- La instancia de la base de datos compacta las páginas hasta el valor del factor de relleno definido para el índice. No establezca este valor demasiado alto.
- Si no se puede obtener un bloqueo en una página durante la fase de compactación del comando “DBCC INDEXDEFRAG”, la instancia de la base de datos omite esa página.
ACERCA DE LOS ÍNDICES INTERCALADOS
El intercalado ocurre cuando una extensión de índice, que es un grupo de ocho páginas de índice, no es físicamente contigua porque se entremezcla con una extensión de otro índice. Esta condición puede ocurrir incluso cuando no hay fragmentación lógica en el índice. Aunque las páginas pueden estar ordenadas física y lógicamente, no son necesariamente contiguas. Cambiar entre extensiones puede afectar el rendimiento ya que el acceso a los datos es ineficiente. Para resolver este problema, reconstruya los índices para almacenarlos en páginas contiguas y reducir la necesidad de cambiar entre extensiones.
ADMINISTRADOR DE DEFRAGACIÓN SQL
SQL Defrag Manager es una poderosa solución capaz de detectar puntos críticos de fragmentación de bases de datos de SQL Server y desfragmentarlos automáticamente. Su consola de administración centralizada permite a los usuarios controlar todas las actividades de desfragmentación en cientos de servidores.
También facilita a los usuarios la ejecución de informes, la automatización de alertas y el establecimiento de políticas de desfragmentación. SQL Defrag Manager realiza el proceso de desfragmentación a través de la programación de trabajos para garantizar un impacto mínimo en los servidores de producción y evita cualquier problema potencial con las comprobaciones previas de los recursos del sistema.