Consultas SQL que más se ejecutan y el CPU que consumen
Las consultas SQL más ejecutadas
Para conocer cuáles son las consultas SQL que con mayor frecuencia se realizan en SQL Server basta con un script. Estas líneas de texto mostrarán, entre otras cosas, el top ten de las consultas que más veces se repiten. Es posible que, en muchos casos, aparezcan repetidas. Para evitar las duplicidades en las consultas, puedes utilizar servicios de caché. De esta forma, se mostrarán las consultas de SQL más ejecutadas sin repeticiones.
SELECT TOP 10 qs.execution_count, SUBSTRING(qt.text,qs.statement_start_offset/2, (case when qs.statement_end_offset = -1 then len(convert(nvarchar(max), qt.text)) * 2 else qs.statement_end_offset end -qs.statement_start_offset)/2) as query_text, qt.dbid, dbname=db_name(qt.dbid), qt.objectid FROM sys.dm_exec_query_stats qs cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt ORDER BY qs.execution_count DESC
En ocasiones, es posible que nuestro SQL Server tenga un gran consumo de CPU. Una buena forma de saber de dónde viene ese consumo excesivo de CPU es realizar consultas. De esta forma podremos saber cuáles son las que más sobrecargan, de media, nuestro servidor. Este consumo elevado de CPU en el servidor puede deberse a diferentes motivos; desde fallos en la memoria del servidor a espacio insuficiente. También es posible que esto se deba a la presencia de algún elemento malicioso que ejecuta demasiada actividad aunque no sea visible.
En cualquier caso, el consumo de CPU es un aspecto que no debe descuidarse en un servidor. Ya que esto podría afectar al rendimiento del servidor y provocar problemas de operatividad.
Consultas SQL con mayor consumo de CPU
Para conocer dónde se encuentra el problema, podemos recurrir a un script. De esta forma podremos saber cuáles son las consultas en SQL con un consumo más elevado de CPU. Unas consultas que pueden estar sobrecargando la CPU de nuestro servidor.
SELECT TOP 10 qs.total_worker_time/qs.execution_count as [Avg CPU Time], SUBSTRING(qt.text,qs.statement_start_offset/2, (case when qs.statement_end_offset = -1 then len(convert(nvarchar(max), qt.text)) * 2 else qs.statement_end_offset end -qs.statement_start_offset)/2) as query_text, qt.dbid, dbname=db_name(qt.dbid), qt.objectid FROM sys.dm_exec_query_stats qs cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt ORDER BY [Avg CPU Time] DESC
Para mejorar aún más el rendimiento de tu servidor, puedes consultar cuáles son las consultas SQL Server que más se ejecutan para optimizar el alojamiento. Un cambio que se reflejará en el comportamiento de los sitios web que en él se encuentren.
Si además de informarte sobre consultas SQL quieres saber de recuperaciones en SQL Server, en nuestro blog encontrarás la información necesaria.