Cómo mejorar el rendimiento de mi SQL Server 2019

Juan Ignacio Oller Aznar

Descubre como configurar de la mejor manera posible tu SQL Server para sacarle todo el rendimiento que tu sistema y hardware puedan brindarte.

 

Uno de los típicos problemas que se dan en las bases de datos instaladas en las empresas es que se instalan sin ningún tipo de optimización, mediante el clásico “siguiente – siguiente” sin mirar a continuación los rendimientos ni mirar si se puede mejorar algo. Estas instalaciones, poco a poco se van deteriorando, según se incrementa la carga de trabajo sobre ese servicio y se va haciendo más patente la falta de rendimiento, hasta el punto de que, la base de datos se puede hacer inoperante.

 

Esto puede impactar entre otras cosas a la operativa diaria y a los tiempos de recuperación en caso de caída.

 

A lo largo de este artículo revisaremos como hacer algunas de las tareas básicas que devolverán el rendimiento a nuestro servidor de bases de datos.

 

 

¿Cómo mejorar el rendimiento de mi SQL Server 2019?

 

 

Para completar de forma satisfactoria este tutorial y poder instalar y configurar el servidor de SQL Server se necesitará:

  • Por un lado, estar dado de alta en la Plataforma Jotelulu con una organización y estar registrado en la misma tras hacer Log-in.
  • Por otro lado, haber dado de alta una suscripción de Servidores 
  • Tener un servidor Windows operativo dentro de la suscripción.
  • Tener un SQL Server 2019 instalado.

 

Paso 1. Consideraciones de la instalación

 

Aunque este artículo presupone que se ha instalado previamente el motor de base de datos, vamos a hacer algunas recomendaciones previas, que deberían tomarse en cuenta antes de hacer la instalación.

 

Lo primero y más importante, este es un servicio de gran importancia y como tal, debería planificarse de manera concienzuda, y no ser instalado a la ligera. Por ello recomendamos que tomes un rato en pensar donde se van a instalar los binarios de ejecución, donde se van a guardar los archivos de las bases de datos, donde se van a almacenar los logs, como se van a hacer las copias de seguridad, a que recursos y con que periodicidad, etc.

 

Un punto realmente importante en este sentido es donde se guardan los temporales, las bases de datos y los logs. Estos son archivos que van a tener una gran carga de trabajo, con un alto número de entradas y salidas (I/O) por lo que se deberían llevar siempre a discos secundarios, y no instalarlos nunca en el disco donde se ejecute el sistema operativo, ya que esto puede estresar o incluso colgar el sistema.

 

Otro punto que se debe tener en cuenta es que los discos que se utilizan, en función del uso que se le de a la base de datos, se deberán usar discos de alto rendimiento que eviten los cuellos de botella que podrían formarse en esta parte.

 

También conviene, aunque no sea 100% relacionado con el rendimiento, una correcta estrategia de gestión de usuarios, tanto para servicios como para operadores y administradores.

Paso 2. Poner umbrales a la memoria RAM

 

Lo primero que tenemos que hacer cuando queremos mejorar el funcionamiento de un servidor de SQL Server es comprobar los márgenes de memoria en los que puede operar nuestro servidor.

 

Es un problema recurrente en las infraestructuras donde tengamos un servidor de SQL-Server, ya que este tipo de aplicativos son voraces y tienden a ocupar toda la memoria RAM disponible, por lo que no nos queda otra que poner unos límites, tanto para la parte superior como inferior para así evitar problemas de desempeño.

 

En caso de no ponerlos, podemos encontrarnos con que la RAM administrada por el gestor de memoria de SQL Server ocupe todos los recursos disponibles, llegando a agotar toda la memoria y afectar a otros aplicativos e incluso al sistema operativo donde está hospedado.

 

Para realizar este cambio de configuración lo primero que se debe hacer es lanzar el Microsoft SQL Server Management Server (SSMS).

 

Una vez arrancado, hacer clic con el botón derecho en el nombre de la instancia (1) y en el menú emergente seleccionar la opción “Propiedades” (2).

Paso 2. Accedemos a las propiedades de la instancia

Paso 2. Accedemos a las propiedades de la instancia

Una vez se muestre el menú de propiedades, se deberá ir a la pestaña de “Memoria” (3) y en este punto ya podemos configurar las opciones pertinentes.

 

Se pueden configurar dos parámetros en este apartado:

  • Memoria del servidor.
  • Otras opciones de memoria.

 

Para la configuración de las opciones de memoria del servidor (4) se recomienda dejar un mínimo de memoria marcada, que dependerá del uso que se le dé a esa base de datos, y por otro lado, el máximo, deberá dejarse un %que permita al sistema operativo y otros aplicativos que pueda tener el servidor trabajar sin problemas.

 

Ojo, esa memoria máxima que pone es muy superior a la que tenemos disponible en el servidor, por lo que habrá que hacer las operaciones con cuidado. Usualmente, suelo dejar unos 2GB libres para sistema operativo, en instalaciones pequeñas, pero sería interesante dejar un mínimo de 4GB, mientras que la RAM máxima que pueda usar la base de datos podría ser de unos 10GB en un equipo con 16GB de RAM, dejando así 6GB para el sistema operativo y otras aplicaciones.

 

En lo que respecta a otras opciones de memoria (5), se podría dejar como está en la configuración inicial. 

 

Paso 2. Configuramos las opciones de memoria

Paso 2. Configuramos las opciones de memoria

Paso 3. Optimización de las consultas SQL

 

Las consultas SQL son otro punto que puede determinar el correcto funcionamiento de una base de datos. Se debe tener siempre en mente, que una consulta se puede hacer de distintas formas, por eso, habrá que sentarse a pensar cual será la más optimizada de cara al rendimiento de nuestro base de datos.

 

Una consulta mal generada puede suponer un mayor uso de los recursos del sistema, pero un gran conjunto de consultas mal generadas, con un gran consumo de recursos del sistema, puede ser fatal para el sistema.

 

Algunos consejos que podemos seguir a la hora de escribir consultas de SQL pueden ser:

  • Especificar el schema/owner, que permitirá que liberar al motor de esta tarea, ya que si no se especifica tendrá que comprobarlo él.
  • Limitar el uso de operadores DISTINCT, UNION, ORDER BY y GROUP BY a menos que sea necesario.
  • Eliminar, siempre que sea posible el operador “*” para referirnos a todas las columnas, marcando aquellas que interesen.
  • Utilizar columna_list para las sentencias SELECT e INSERT ayuda a optimizar los procesos y eliminar posibles errores que redundarían en un mal aprovechamiento de los recursos.
  • Siempre que se pueda, reducir el tamaño de las transacciones, para de esta manera evitar generar grandes cargas que terminen desembocando en errores o rollbacks.

 

Existe mucha documentación sobre optimización de consultas por lo que le recomendamos que la revise detenidamente.

Paso 4. Uso del Tuning Advisor de SQL Server

 

La última medida que proponemos para la optimización de nuestro servidor de SQL Server 2019 es el uso de Tuning Advisor, una herramienta integrada en SQL Server 2019 y que está disponible en las versiones de pago y en la versión Developer, pero por ejemplo no está disponible en la versión Express.

 

Esta herramienta, proporciona una forma de revisar el estado de nuestra base de datos y realizar ciertas mejoras en la misma. El proceso no es complicado, pero requiere una serie de pasos que deben realizarse en un orden concreto para poder obtener sus ventajas.

 

NOTA:Es importante que durante este proceso no haya nadie más ejecutando esta aplicación de traza, ya que generará problemas y falseará los resultados.

 

Lo primero que se deberá hacer es arrancar SSMS (SQL Server Management Studio), una vez se haya arrancado y se hayan introducido la instancia a la que se quiera conectar, el usuario y la contraseña de este, se deberá ir al menú “Tools” y seleccionar “SQL Profiler” (6).

En la ventana emergente de SQL Server Profiler que aparece se muestran dos pestañas, “General” y “Event Selection”, se deben configurar parámetros en ambos casos. Comenzando por “General”, dentro de “Trace Name” se debe introducir el nombre de la traza (7).

 

En “Use the template” (8) se pueden elegir diferentes perfiles, pero en este caso se debe elegir Tuning ya que se está buscando mejorar el rendimiento.

 

Una vez configurada esta sección se debe pasar a la pestaña “Events Selection” (9).

Paso 4. Configuramos la parte general de SQL Profiler

Paso 4. Configuramos la parte general de SQL Profiler

En la pestaña de “Events Selection” debemos revisar que está todo seleccionado (10) para obtener la mayor información posible y después se debe hacer clic en “Column Filters” (11) para dar una configuración adicional.

Paso 4. Configuramos la parte de events selection de SQL Profiler

Paso 4. Configuramos la parte de events selection de SQL Profiler

Al abrir los filtros, se debe seleccionar “DatabaseName” (12) y en la parte de “Like” dar el nombre de la base de datos (13) con la que se quiere trabajar.

 

Una vez hecho esto, se debe hacer clic en “Ok” (14) para que se salven los cambios y lanzamos la ejecución haciendo clic en “Run” (15).

Paso 4. Filtramos la base de datos sobre la que queremos ejecutar la acción

Paso 4. Filtramos la base de datos sobre la que queremos ejecutar la acción

En este momento la traza está en funcionamiento, y se podrá ver un mensaje que reza “Trace start” (16) A continuación, se deberán ejecutar los procesos típicos sobre la base de datos para que el aplicativo pueda tomar métricas del funcionamiento.

 

Y transcurrido un tiempo, se deberá detener la ejecución para poder extraer los datos, para ello se deberá hacer clic en “Stop” (17).

Paso 4. Observamos que la traza se está ejecutando y la detenemos pasado un rato

Paso 4. Observamos que la traza se está ejecutando y la detenemos pasado un rato

En este paso, se debe guardar la traza para poder procesarla debidamente, para ello se debe seleccionar “File > Save as > Trace File” (18), seleccionando la ruta donde se dejará almacenado, que quedará como fichero .trc (trace).

Paso 4. Salvamos la traza

Paso 4. Salvamos la traza

Acto seguido se debe abrir el menú “Tools > Database Engine Tuning Advisor” (19).

Paso 4. Abrimos Database Engine Tuning Advisor

Paso 4. Abrimos Database Engine Tuning Advisor

En este punto se debe dar un nombre a la sesión de trabajo (20), seleccionar el fichero de la traza que hemos salvado previamente (21), seleccionar la base de datos a analizar (22) y (23).

 

Y en este momento se lanza el análisis en sí de la traza que hemos recogido previamente, para ello se debe seleccionar “Actions > Start Analysis” (24).

Paso 4. Seleccionamos la traza a analizar

Paso 4. Seleccionamos la traza a analizar

En este punto, comienza el análisis en si de todo lo recopilado previamente y se mostrarán todas las recomendaciones que el SQL Tuning Advisor estime conveniente en base a las mejores prácticas de Microsoft para las bases de datos y más concretamente para SQL Server 2019 (v 15.0).


Además del informe, nos muestra la estimación de lo que deberíamos mejorar en percentil, si aplicamos dichas mejoras.  

Conclusiones y próximos pasos:

 
El proceso de tunning u optimización de SQL Server 2019 permite mejorar el rendimiento para así explotar de mejor manera las propiedades de mi hardware y sistema operativo. Este proceso se realizar en muy pocos pasos tal como se ha podido ver en este tutorial.
 
 
Esperamos que, con esta pequeña guía, no tengas problemas al mejorar el rendimiento de este servicio, pero si los tuvieras, no dudes en contactar con nosotros para que podamos echarte una mano.
 
 
¡Gracias por tu confianza!

Categorías: Servidores

Bases de datosSQL ServerSQL