sql >> Base de Datos >  >> RDS >> Database

¡Los contadores Zombie PerfMon que nunca mueren!

Una de las cosas que es a la vez genial y horrible de Internet es que, una vez que algo se publica en el éter, básicamente nunca desaparece. (Algún día, los políticos se darán cuenta de esto. Podemos verificar fácilmente su consistencia). Debido a la longevidad del contenido publicado en Internet, muchos temas de ajuste de rendimiento se convierten en "zombis". ¡Los matamos a tiros, pero siguen regresando!

En otras palabras, esas antiguas recomendaciones eran una mejor práctica sugerida hace mucho tiempo, para una versión específica de SQL Server, pero ahora son inapropiados para la versión más nueva. No es raro para mí, cuando hablo en una conferencia, encontrarme con alguien que todavía se aferra a configuraciones y técnicas que no han sido buenas prácticas desde los días de SQL Server 2000. La Guía de operaciones de SQL Server 2000 sobre capacidad/almacenamiento contiene muchos " recomendaciones de mejores prácticas" que eran muy específicas de la versión y ya no se aplican en la actualidad.

Así que aquí hay un ejemplo. El % Disk Time y Disk Queue Length Los contadores PerfMon se recomendaron mucho como indicadores de rendimiento clave para el rendimiento de E/S. SQL Server lanza una gran cantidad de E/S en los discos mediante dispersión/recopilación para maximizar la utilización del subsistema de E/S basado en disco. Este enfoque conduce a ráfagas breves de profundidades de cola largas durante los puntos de control y las lecturas anticipadas de una instancia de SQL Server. A veces, la carga de trabajo del servidor es tal que su disco no puede mantenerse al día con las E/S que se le imponen y, cuando eso sucede, también verá largas colas. El escenario de ráfaga corta no es un problema. El escenario de alargamiento de la longitud de la cola suele ser un problema. Entonces, ¿es una buena práctica?

En una palabra, no tanto.

Esos contadores aún pueden ser útiles en una instancia de SQL Server que solo tiene un disco duro (aunque eso es extremadamente raro en estos días). ¿Por qué?

El contador PerfMon % Disk Time es una métrica de rendimiento falsa por varias razones. No tiene en cuenta las solicitudes de E/S asincrónicas. No puede determinar cuál puede ser el perfil de rendimiento real de un conjunto RAID subyacente, ya que contienen varias unidades de disco. El contador PerfMon Disk Queue Length también es en su mayoría inútil, excepto en servidores SQL con un solo disco físico, porque el caché del controlador del disco duro ofusca cuántas operaciones de E/S están realmente pendientes en la cola o no. De hecho, algunos discos duros incluso tienen pequeños cachés de escritura, lo que enturbia aún más el agua si la E/S está realmente en cola, en un caché en algún lugar entre el sistema operativo y el disco, o si finalmente ha llegado hasta el final. al CMOS en el disco.

Mejores contadores de rendimiento de E/S

En lugar de usar esos contadores PerfMon, use el Avg Disk Reads/sec , Avg Disk Writes/sec y Avg Disk Transfers/sec para realizar un seguimiento del rendimiento de los subsistemas de disco. Estos contadores rastrean el número promedio de E/S de lectura, E/S de escritura y E/S de lectura y escritura combinadas que ocurrieron en el último segundo. De vez en cuando, me gusta realizar un seguimiento de las mismas métricas por volumen de datos en lugar de la tasa de operaciones de E/S. Por lo tanto, para obtener esos datos, es posible que desee probar estos contadores PerfMon específicos del volumen: Avg Disk Transfer Bytes/sec , Avg Disk Read Bytes/sec y Avg Disk Write Bytes/sec .

Para el rendimiento de E/S de SQL Server, use vistas de administración dinámica (DMV)

Y a menos que haya estado viviendo en una cueva, debe asegurarse de usar las Vistas de administración dinámica (DMV) de SQL Server para verificar el rendimiento de E/S para las versiones recientes de SQL Server. Algunos de mis DMV favoritos para E/S incluyen:

  • sys.dm_os_wait_stats
  • sys.dm_os_waiting_tasks
  • sys.dm_os_rendimiento_contadores
  • sys.dm_io_virtual_file_stats
  • sys.dm_io_pending_io_requests
  • sys.dm_db_index_operational_stats
  • sys.dm_db_index_usage_stats

Entonces, ¿cómo está rastreando las métricas de rendimiento de E/S? ¿Cuáles estás usando?

¡Espero tener noticias tuyas!

Disfruta,
-Kev
–¡Sígueme en Twitter!