Establecimiento de las métricas de línea base

Completado

Una línea base es una colección de medidas de datos que le ayuda a comprender el "estado estable" normal de la aplicación o el rendimiento del servidor. Recopilar estos datos a lo largo del tiempo le permite identificar cambios con respecto al estado normal. Las líneas base pueden ser tan simples como un gráfico de uso de la CPU a lo largo del tiempo, o agregaciones complejas de métricas para ofrecer datos de rendimiento de nivel granular de llamadas de aplicación concretas. La granularidad de la línea base dependerá de la importancia del rendimiento de la base de datos y de la aplicación.

Con cualquier tipo de carga de trabajo de la aplicación, es imperativo establecer una línea base de trabajo. Una línea base le ayudará a identificar si debe considerarse que un problema continuo se encuentra dentro de los parámetros normales o bien si ha superado los umbrales especificados. Sin una línea base, cada problema encontrado podría considerarse normal y, por tanto, no requerir ninguna intervención adicional.

Correlación entre el rendimiento de SQL Server y del sistema operativo

Al implementar SQL Server en una máquina virtual de Azure, es fundamental correlacionar el rendimiento de SQL Server con el del sistema operativo subyacente. Si usa Linux como sistema operativo, tendrá que instalar InfluxDB, Collectd y Grafana para capturar datos similares al Monitor de rendimiento de Windows. Estos servicios recopilan datos de SQL Server y proporcionan una interfaz gráfica para revisarlos. Estas herramientas de Linux o el Monitor de rendimiento de Windows se pueden usar en conjunción con datos específicos de SQL Server como las estadísticas de espera de SQL Server. El uso conjunto de estas herramientas le permitirá identificar los cuellos de botella en el hardware o el código. Los siguientes contadores del Monitor de rendimiento son una muestra de métricas útiles de Windows y pueden permitirle capturar una buena línea base para una carga de trabajo de SQL Server:

Processor(_Total)% Processor Time: este contador mide el uso de la CPU de todos los procesadores del servidor. Es un buen indicador de la carga de trabajo general y, cuando se usa junto con otros contadores, este contador puede identificar problemas con el rendimiento de las consultas.

Paging File(_Total)% Usage: en una instancia de SQL Server bien configurada, la memoria no debe paginarse en el archivo de paginación del disco. Sin embargo, en algunas configuraciones, puede tener otros servicios en ejecución que consuman la memoria del sistema y que hagan que el sistema operativo pagine la memoria en el disco, lo que conllevaría una degradación del rendimiento.

PhysicalDisk(_Total)\Avg. Disk sec/Read and Avg. Disk sec/Write: este contador ofrece una buena métrica sobre el funcionamiento del subsistema de almacenamiento. En la mayoría de los casos, los valores de latencia no deben superar los 20 ms, y con Premium Storage debería ver valores inferiores a los 10 ms.

System\Processor Queue Length: este número indica el número de subprocesos en espera en el procesador. Si es mayor que cero, indica presión de la CPU, lo que implica que la carga de trabajo podría beneficiarse de más CPU.

SQLServer:Buffer Manager\Page life expectancy: la duración prevista de la página indica cuánto tiempo espera SQL Server que una página permanezca en la memoria. No hay ningún valor adecuado para esta configuración. La documentación anterior hace referencia a 300 segundos como valor adecuado, pero se escribió en la era de 32 bits, cuando los servidores tenían mucha menos RAM. Debe supervisar este valor a lo largo del tiempo y evaluar las caídas repentinas. Dichas caídas en el valor del contador podrían indicar patrones de consulta deficientes o presión de la memoria externa (por ejemplo, si el servidor ejecuta un paquete SSIS grande), o bien podrían formar parte del procesamiento normal del sistema, como la ejecución de una comprobación de coherencia en una base de datos grande.

SQLServer:SQL Statistics\Batch Requests/sec: este contador resulta útil para evaluar el grado de ocupación de una instancia de SQL Server a lo largo del tiempo. Una vez más, no hay ningún valor bueno o malo, pero puede usar este contador junto con el % de tiempo de procesador para comprender mejor la carga de trabajo y las líneas base.

SQLServer:SQL Statistics\SQL Compilations/sec and SQL Re-Compilations/sec: estos contadores se actualizarán cuando SQL Server tenga que compilar o volver a compilar un plan de ejecución para una consulta porque no existe ningún plan en la caché de planes o porque el plan se ha invalidado debido a un cambio. Las recompilaciones pueden indicar T-SQL con sugerencias de consulta de recompilación, o bien indicar presión de la memoria en la caché de planes debida a muchas consultas ad-hoc o simplemente a la presión de la memoria.

Estos contadores son solo un ejemplo de los contadores disponibles del Monitor de rendimiento. Aunque los contadores anteriores proporcionan una buena línea base de rendimiento, puede que necesite examinar más contadores para identificar problemas de rendimiento concretos.

Estadísticas de espera

Cuando se ejecuta un subproceso y se fuerza a que espere en un recurso no disponible, SQL Server realiza un seguimiento de estas métricas. Esta información se identifica fácilmente mediante la vista de administración dinámica (DMV) sys.dm_os_wait_stats. Esta información es importante para comprender el rendimiento de línea base de la base de datos y puede ayudarle a identificar problemas de rendimiento concretos relacionados tanto con la ejecución de consultas como con limitaciones de hardware. La identificación del tipo de espera adecuado y la resolución correspondiente serán fundamentales para resolver los problemas de rendimiento. Las estadísticas de espera están disponibles en la plataforma de Azure SQL.