sql >> Base de Datos >  >> RDS >> Sqlserver

Brent Ozar explica la fragmentación interna y externa de SQL Server

Según Microsoft SQL Master, Brent Ozar, ha tomado algunas decisiones terribles de ajuste del rendimiento de la base de datos a lo largo de su carrera. Afortunadamente para nosotros, podemos beneficiarnos de sus errores y no tenemos que resolver todo por nuestra cuenta. Ha compartido su sabiduría ganada con tanto esfuerzo de forma gratuita durante la serie de webcasts de Quest's Database Training Days.

En una de sus sesiones, aprendimos "¿Por qué la desfragmentación de sus índices no está ayudando?". De hecho, podría estar empeorando el rendimiento de su base de datos, y Brent nos explicó por qué. En el camino, enfatizó la importancia de saber lo que está midiendo cuando se trata de optimizar el rendimiento de SQL Server.

Fragmentación interna vs. externa

Brent nos dio un tutorial rápido sobre la forma en que SQL Server almacena datos en "páginas" de 8 KB. En un índice nuevo o reconstruido, las páginas están todas llenas y almacenadas en orden. Pero, a medida que se agregan más datos, las páginas se dividen:no todas las páginas están llenas y aparecen desordenadas. Esta es la diferencia vital entre la fragmentación interna y externa:

  • Fragmentación externa:se refiere a páginas desordenadas
  • Fragmentación interna:se refiere al espacio vacío en una página

Enfocar menos divisiones en la página

Muchos profesionales de bases de datos se enfocan en las divisiones de página como una medida de la fragmentación de la base de datos, sin embargo, Brent explicó que este número no tiene sentido porque las divisiones de página ocurren tanto al agregar una nueva fila a una tabla vacía como al agregar una nueva página. Entonces, no es útil después de todo.

Cómo la fragmentación externa puede empeorar las cosas

En esta sesión, Brent afirmó que la fragmentación externa no es una medida útil del rendimiento de la base de datos, ya que el orden de las páginas no tiene mucho impacto en la velocidad de las tareas de mantenimiento, la ejecución de consultas en la RAM o la lectura de datos del disco. Por lo tanto, los profesionales de bases de datos que intentan corregir la fragmentación externa reorganizando y reconstruyendo índices en realidad empeoran el rendimiento al inflar las copias de seguridad y consumir más tiempo de ventana de mantenimiento.

Los profesionales de bases de datos que intentan reducir la fragmentación externa dejando espacio en las páginas mediante la configuración de un factor de relleno también están causando un problema peor que el que intentan solucionar. Esto se debe en gran parte a que casi nunca tiene que insertar datos en un punto intermedio del índice. Por lo tanto, tratar de mantener las páginas en orden poniendo menos datos en cada página individual en realidad está provocando una fragmentación interna.

Monitoreo del tiempo de espera

¿Qué deberías hacer en su lugar? Brent recomienda establecer el factor de relleno en el valor predeterminado de 100 % (o al menos 80 % o superior) y luego reconstruir los índices para empaquetarlos nuevamente. Luego, concéntrese en monitorear el número de ajuste de rendimiento correcto:tiempo de espera. Una de las mejores formas de ver varios aspectos del tiempo de espera en las instancias de su base de datos es usar una herramienta de supervisión del rendimiento para identificar exactamente dónde se están atascando los procesos.

Para obtener aún más información de Brent sobre la fragmentación de índices, las estadísticas de tiempo de espera y lo que debe hacer con respecto al mantenimiento de índices, escuche el webcast a pedido.

También puede acceder a más consejos de expertos sobre el rendimiento de la base de datos a través de los Días de capacitación en bases de datos de Quest.