Compartir a través de


Desfragmentación de unidades de disco de base de datos de SQL Server

En este artículo se proporcionan algunas instrucciones sobre la desfragmentación de unidades de base de datos de SQL Server.

Versión del producto original: SQL Server
Número de KB original: 3195161

¿Se deben desfragmentar los discos de SQL Server en la capa del sistema operativo?

Depende del estado de fragmentación de las unidades actuales. Por lo general, no le duele y puede ayudar, suponiendo que siga las precauciones que se describen en la sección Precauciones al desfragmentar unidades de base de datos de SQL Server. El único negativo es que debe apagar SQL Server a menos que la herramienta de desfragmentación admita funcionalidades de datos transaccionales. La buena noticia es que, después de ejecutar la desfragmentación, realmente no tiene que hacerlo de nuevo a menos que tenga muchos crecimiento automático y otros archivos que se muevan y apaguen los discos. Asegúrese de comprender las estrategias de almacenamiento en caché de escritura que use la utilidad. El almacenamiento en caché de este tipo de utilidad podría implicar una memoria caché no respaldada por la batería y esto podría infringir los requisitos del protocolo WAL.

Más información

Un desfragmentador de disco mueve todos los archivos, incluido el archivo de base de datos, a clústeres contiguos en un disco duro. Esto optimiza y acelera el acceso a archivos. Excepto en el caso del sistema operativo Windows NT, si no desfragmenta el disco duro, es posible que el sistema operativo tenga que ir a varias ubicaciones físicas en el disco para recuperar el archivo de base de datos, lo que hace que el acceso a archivos sea más lento.

Dado que el acceso a datos físicos es la parte más costosa de una solicitud de E/S, la desfragmentación puede proporcionar mejoras de rendimiento para SQL Server y otras aplicaciones. Los fragmentos relacionados con el posicionamiento de datos cerca entre sí reducen los requisitos de operación de E/S.

En la actualidad hay varias utilidades de desfragmentación disponibles en el mercado. Algunas utilidades permiten la desfragmentación en archivos abiertos, mientras que otras requieren desfragmentación de archivos cerrados o funcionan mejor cuando se usan en condiciones de archivo cerrado. Además, algunas utilidades tienen funcionalidades transaccionales, mientras que otras no.

Precauciones al desfragmentar unidades de base de datos de SQL Server

Al evaluar una utilidad de desfragmentación para su uso con SQL Server, asegúrese de que la utilidad proporciona funcionalidades de datos transaccionales. En concreto, elija una utilidad de desfragmentación que proporcione las siguientes funcionalidades de datos transaccionales:

  • El sector original no se considera movido hasta que el nuevo sector se haya establecido correctamente y los datos se hayan copiado correctamente.

  • La utilidad protege contra un error del sistema, como una interrupción de energía, de una manera segura que mantiene los archivos lógica y físicamente intactos. Para garantizar la integridad de los datos, se recomienda encarecidamente una prueba de extracción del plug cuando se ejecuta una utilidad de desfragmentación en un archivo basado en SQL Server.

  • El protocolo Write-Ahead Logging (WAL) requiere la prevención de reescrituras del sector para evitar la pérdida de datos. La utilidad debe mantener la integridad física del archivo siempre que realice cualquier movimiento de datos. La utilidad debe funcionar en los límites del sector de una manera transaccional de mantener intactos los archivos de SQL Server.

  • La utilidad debe proporcionar mecanismos de bloqueo adecuados para garantizar que el archivo conserva una imagen coherente para cualquier modificación. Por ejemplo, la utilidad debe asegurarse de que el sector original no se puede modificar cuando se copia en una nueva ubicación. Si se permitían modificaciones, la utilidad de desfragmentación podría perder la escritura.

Los desfragmentadores de disco críticos que no proporcionan estas funcionalidades de datos transaccionales no deben usarse a menos que la instancia de SQL Server que use los discos que se van a desfragmentar se haya apagado para que no desfragmente los archivos de base de datos abiertos.

La desfragmentación de archivos abiertos genera varios posibles problemas que normalmente no son desfragmentaciones de archivos cerrados:

  • La desfragmentación de archivos abiertos afecta al rendimiento. Las utilidades de desfragmentación pueden bloquear secciones del archivo, lo que impide que SQL Server complete una operación de lectura o escritura. Esto puede afectar a la simultaneidad del servidor que ejecuta SQL Server. Póngase en contacto con el fabricante de la herramienta de desfragmentación para obtener información sobre cómo se bloquean los archivos y cómo podría afectar a la simultaneidad de SQL Server.

  • La desfragmentación de archivos abiertos puede afectar al almacenamiento en caché de escritura y al orden. Las utilidades basadas en archivos abiertos requieren componentes de ruta de acceso de E/S; estos componentes no deben cambiar el orden ni la naturaleza prevista de la operación de escritura. Si los inquilinos del protocolo WAL o de escritura se interrumpen, es probable que se produzcan daños en la base de datos. La base de datos y todos los archivos asociados se consideran una sola entidad. (Esto se trata en muchos artículos de Microsoft Knowledge Base, Libros en pantalla de SQL Server y varias notas del producto). Todas las escrituras deben conservar las secuencias originales de ordenación de escritura y las funcionalidades de escritura a través.

Recomendaciones

  • Desfragmente el volumen NTFS, a menos que tenga formato, antes de crear una nueva base de datos o mover las bases de datos existentes al volumen.
  • Asegúrese de planear y ajustar el tamaño de los archivos de registro y datos de SQL correctamente cuando se cree la base de datos por primera vez.
  • Cree los registros de transacciones anteriores a SQL Server 2014 teniendo en cuenta el crecimiento automático si se usará.
  • Desfragmente el disco o los discos en los que residen los registros de transacciones. Esto impedirá la fragmentación de archivos externos del registro de transacciones. Este problema puede producirse si los archivos han tenido mucho crecimiento automático o cuando no es un disco dedicado que contiene muchas bases de datos, registros u otros archivos que se han modificado. En esa situación, los archivos (incluido el archivo de registro de transacciones) se pueden intercalar y fragmentar.
  • Si va a desfragmentar unidades de base de datos que son discos de clúster, los discos de clúster deben configurarse para suspender la supervisión de estado (también denominada modo de mantenimiento).
  • Para minimizar la fragmentación, no reduzca los archivos de base de datos. Además, aumente manualmente en tamaños que minimicen la actividad de crecimiento.
  • Mantenga los archivos de base de datos en discos dedicados.
  • Realice una copia de seguridad completa antes de desfragmentar esas ubicaciones que contienen archivos de copia de seguridad y base de datos de SQL Server.

Referencias