19 votos

SQL Base de datos de archivo físico de la fragmentación

Sé que hay realmente tres tipos de fragmentación que necesito para estar preocupados acerca de como un DBA:

  1. El índice de Fragmentación de los archivos de datos de SQL, incluyendo el índice agrupado (tabla) la fragmentación. Identificar esto con DBCC SHOWCONTIG (en SQL 2000) o sys.dm_ db_ index_ physical_ estadísticas (2005+).

  2. VLF Fragmentación en el interior de SQL archivos de Registro. Ejecutar DBCC LOGINFO para ver cómo muchos VLFs en cada uno de sus SQL archivos de registro.

  3. Archivo físico de la fragmentación de los archivos de base de datos en el disco duro. Diagnosticar esta utilizando el "Desfragmentador de Disco" utilidad de Windows. (inspirado por este excelente blog post)

Una gran cantidad de atención que se presta a la fragmentación de índices (ver este excelente Serverfault respuesta de Paul Randall), por lo que no es el objetivo de mi pregunta.

Sé que puedo evitar la fragmentación física (y VLF fragmentación) cuando la base de datos es creada originalmente por la planificación de una razonable espera de los datos de registro y de archivo de tamaño, debido a esta fragmentación se produce con más frecuencia de la frecuente crece y se contrae, pero tengo algunas preguntas acerca de cómo solucionar fragmentación física una vez que se identifica:

  • Primero de todo, es la fragmentación física aún relevante en una Empresa de SAN? Puedo/debo usar el Desfragmentador de Windows en un SAN drive, o el de SAN equipo de uso interno de la desfragmentación de los servicios públicos? Es el análisis de la fragmentación del recibo de la herramienta de Windows, incluso precisa cuando se ejecuta en un SAN drive?

  • ¿Qué tan grande de un acuerdo es la fragmentación física en el rendimiento de SQL? (Vamos a suponer que una unidad interna de la matriz, a la espera del resultado de la pregunta anterior.) Es mucho más GRANDE que el interno índice de fragmentación? O es realmente el mismo tipo de problema (la unidad de tener que hacer las lecturas aleatorias en lugar de lecturas secuenciales)

  • Es la desfragmentación (o reconstrucción) de los índices una pérdida de tiempo si la unidad está físicamente fragmentada? Necesito arreglar el uno, antes de abordar el otro?

  • ¿Cuál es la mejor manera de arreglar el archivo físico de la fragmentación en una producción de SQL cuadro? Sé que puedo desactivar los servicios de SQL y ejecutar la Desfragmentación de Windows, pero también he oído acerca de una técnica en la que hacer una copia de seguridad completa, la caída de la base de datos, a continuación, restaurar desde la copia de seguridad a una unidad vacía. Es esta última técnica se recomienda? ¿Restaurar desde una copia de seguridad así también generar índices a partir de cero, eliminando interna de los índices de fragmentación? O es simplemente devolver el orden de las páginas de la misma como cuando se realizó la copia de seguridad? (Estamos usando la Búsqueda de Lightspeed copias de seguridad con compresión, si lo que importa.)

ACTUALIZACIÓN: Buenas respuestas por el momento, ya sea para desfragmentar unidades de SAN (NO) y si la desfragmentación del índice es todavía vale la pena físicamente fragmentada de unidades (SI).

Nadie más cuidado para opinar sobre los mejores métodos para realizar la desfragmentación? O una estimación de la longitud de tiempo que usted esperaría que se necesitaría para desfragmentar una gran fragmentación unidad, digamos de 500 gb o así? Pertinentes, obviamente, porque es el tiempo de mi SQL server estará abajo!

También, si alguien tiene alguna información anecdótica sobre el rendimiento de SQL mejoras que hemos hecho a través de la fijación fragmentación física, que sería grande, demasiado. Mike blog habla sobre el descubrimiento del problema, pero no es específico acerca de qué tipo de mejora que hizo.

9voto

Jeremy Puntos 1287

Creo que este artículo le da una excelente visión general de la desfragmentación de unidades de SAN

http://www.las-solanas.com/storage_virtualization/san_volume_defragmentation.php

Puntos básicos es que la desfragmentación no está recomendado en SAN de almacenamiento debido a que es difícil correlacionar la ubicación física de los bloques en el disco cuando la ubicación se ha virtualizado por la SAN en la presentación de los LUN.

Si se utiliza un dispositivo en BRUTO asignaciones o usted tiene acceso directo a un conjunto de discos RAID que es el LUN usted está trabajando, pude ver degfragmentation tener un efecto positivo, pero si te dan un "virtual" LUN fuera comparten un conjunto RAID-5, no.

7voto

Bernie Perez Puntos 5091

Varias partes de esta pregunta y su respuesta:

Archivo físico de la fragmentación no es realmente relevante para la Empresa de almacenamiento SAN, como Kevin ya se señaló - así que no hay que añadir nada allí. Es realmente llegado hasta el subsistema de e/S y la probabilidad de que usted será capaz de hacer que las unidades van de más aleatoria e/s cuando se realiza un análisis para más secuencial I/Os cuando se realiza un escaneo. para el DAS, lo más probable es que, por un complejo de slice-n-dice SAN, probablemente no.

Nivel de sistema de archivos de la desfragmentación sólo hacerlo con SQL apagar. Nunca he tenido problemas yo aquí (como nunca he realizado un abierto en línea de archivos de desfragmentación de archivos de base de datos SQL), pero he oído un montón de evidencia anecdótica de los clientes y los clientes de extraños problemas de corrupción que ocurren. General de la sabiduría es no hacerlo con SQL en línea.

El índice de fragmentación es completamente ortogonal a la fragmentación de archivos. SQL Server no tiene idea de archivo-fragmentación - demasiados virtualizatin capas en entre para tener alguna esperanza de trabajar fuera real subsistema de e/S geometrías. Índice de fragmentación, sin embargo, SQL conoce todo acerca de. Sin repetirme demasiado, a partir de la respuesta que ya se hace referencia, el índice de fragmentación evitará SQL haciendo eficiente el rango de escaneo de readahead, independientemente de la forma fragmentada (o no) los archivos están en el nivel de sistema de archivos. Así que - absolutamente debe mitigar la fragmentación del índice, si usted está viendo degradar el rendimiento de las consultas.

Usted no tiene que hacer estos en ningún orden en particular, aunque si usted toma el cuidado de archivo-la fragmentación del sistema y, a continuación, volver a generar todos los índices y causar más del sistema de archivos de la fragmentación creciente de varios archivos en un defragged volumen, usted está probablemente va a ser desactivada. Va a causar ningún perf cuestiones, aunque? Como se mencionó anteriormente, esto depende de :-D

Espero que esto ayude!

3voto

jcevallos Puntos 226

¿Cuál es la mejor manera de arreglar física la fragmentación de archivos en una producción de SQL el cuadro?

Corro SYSINTERNALS' contig en mis archivos de base de datos.

Ver http://technet.microsoft.com/en-us/sysinternals/bb897428.aspx

1voto

Muhib Afzal Puntos 1

He intentado desfragmentar los discos físicos en un scsi de la solución una vez, pero tiene poco o ningún aumento de rendimiento. La lección que he aprendido es que si usted experiencia de rendimiento lento debido a que el sistema de disco, no tiene nada que ver con la fragmentación, en la medida de como hablamos archivo de datos, ya que es el uso de acceso aleatorio.

Si los índices son desfragmentado y se actualizan las estadísticas (muy importante) y aún se puede ver de e/S como cuello de botella, entonces usted sufre de otras cosas que la fragmentación física. Han utilizado más de 80% de la unidad? ¿Tiene suficientes unidades? Son sus consultas optimizado lo suficiente? Están haciendo un montón de exploración de Tabla o peor aún un montón de búsqueda de índice, seguido por el índice agrupado de búsqueda? Mira los planes de consulta y el uso de "set statistics io on" para saber cuál es el que realmente está pasando con su consulta. (busca un alto número de físico o lógico que se lee)

Por favor, hágamelo saber si estoy totalmente equivocado.

/Håkan Winther

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: