Vous êtes sur la page 1sur 4

SQL PROFILER

El SQL profiler sirve para monitorear SQL. Funciona a travs de indicadores que se agregan para ser
registrados.
En este documento se muestra como identificar los procedimientos ms frecuentes y los ms lentos,
para despus poderse concentrar en optimizarlos. Adems se comentan contadores que pueden ser
tiles en otros mltiples contextos. Estn disponibles plantillas con los conjuntos de contadores que se
nombran. Ms adelante se habla de ellas. Tambin es posible cruzar los datos con los logs obtenidos con
perfmon. Se incluye una referencia que muestra como hacerlo.

RECOMENDACIONES DE USO
En esta direccin se encuentra un manual que explica el uso de SQL profiler
http://msdn.microsoft.com/en-us/library/ms187929%28v=SQL.90%29.aspx. Es mejor leerlo al final,
solamente si es necesario.
Se recomienda:

Loguear a un archivo y no a una tabla de sql server. Agrega menos overhead y adems despus
se puede importar el log (.trc) formado.
Solo capturar los contadores necesarios. Contadores innecesarios degradan el rendimiento y
entorpecen la interpretacin de los datos.

PIQUES
Unos piques tiles para tener en cuenta:

Usar plantillas. Las que ya vienen por defecto o hechas por uno mismo. Es ms fcil de usar,
ms rpido y reduce las chances de errarle.
Incluir las columnas databasename y objectname: sino hay que ir traduciendo los ids. SALVO
que se quiera dejar lo ms liviano posible. En ese caso despus se hace un join o algo con los
datos para volverlos legibles.
Usar filtros para guardar solamente lo que queremos mirar (por ejemplo solo loguear los sps de
una base de datos en particular, hay un ejemplo en obtener los SP ms usados).

MONITOREAR LOS PROCEDIMIENTOS ALMACENADOS


SQL profiler viene con plantillas predefinidas. Las mismas son:

OBTENER LOS SP MS USADOS


Como la mayora de la actividad de nuestras bases se da por medio de stored procedures, nos es muy
til la primera de estas plantillas para obtener cuales fueron los SP ms invocados. Para lograr esto
debemos:
1.

Iniciar una traza en sql profiler con la plantilla SP_Counts(use the template sp_counts). Y
marcar que se guarde en un archivo. Verificar que se incluyan las columnas databaseName y
objectName. Adems puede ser muy til agregar un filtro (con column filter abajo a la derecha)
que especifique una base de datos (por ejemplo: databasename like el nombre de mi base).
Para ver como se inicia una traza, consultar:
http://msdn.microsoft.com/en-US/library/ms175047%28v=SQL.90%29.aspx

2. Luego de finalizada la captura, volcar los resultados a una tabla de sql server de la siguiente
manera:
SELECT *
INTO <nombre_tabla_traza>
FROM ::fn_trace_gettable('C:\MyTrace.trc', default)
3.

Realizar la siguiente consulta para ver los diez (por ejemplo) SP ms invocados de mi tabla de
gestin
SELECT top (10) DatabaseName,ObjectName, count (*)
FROM nombre_tabla_traza
WHERE DatabaseName= <tabla gestion>
GROUP BY DatabaseName,objectName
ORDER BY count(*) DESC

OBTENER LOS SP MS L ENTOS


Para identificar los SP que demoran ms, hay que agregar a la captura el evento SP:Completed. Para
identificar la duracin de las sentencias individuales en cada SP hay que capturar SP:StmtCompleted y
dentro de este evento es muy til la columna text data que incluye el texto de la sentencia ejecutada.
Adjunto a este documento se encuentra una plantilla (SPLentos) que incluye ambos contadores. No hay
que olvidarse de agregar el filtro por database name como en el punto 1. Para ver como se importa una
plantilla:
http://msdn.microsoft.com/en-us/library/ms177471%28v=SQL.90%29.aspx

OTROS CONTADORES TILES


Conocer todos los contadores disponibles puede ser muy tedioso, en seguida estn unos contadores que
pueden ser muy tiles. Tambin se incluye una plantilla con todos estos contadores. Para usar la
plantilla hay que quitar los innecesarios y evaluar si se filtra por databasename como en el ejemplo de
obtener los SP ms usados.

Execution Warnings: Si el servidor est muy ocupado, puede que la query espere por recursos.
Este evento informa cuanto demora esta espera, en el caso de ocurrir. Tiene dos posibles
valores:
o "Query Wait" se puede usar para ver que tan seguido una query tiene que esperar.
o "Query Time-Out" se usa para ver con qu frecuencia una query dio time out
esperando por algn recurso.
Si ocurren muy amenudo, se puede considerar: reducir la carga, mejorar el HW, reescribir los
SP o mejorar algn ndice.

Hash Warning: Este evento se utliza para medir las recursions de hash y los hash bails. Las
recursiones de hash se dan cuando la tabla de hash (que se usa por ejemplo para un join) no
entra en memoria. Cuando esto sucede, la tabla se parte en varios pedazos que se mapean a
travs de una funcin de hash aplicada sobre los resultados de la funcin de hash anterior. O
sea, la tabla se parte usando como clave de hash los resultados de la funcin de hash anterior.
Esto pasa tantas veces como sea necesario (recursivamente) hasta que las tablas entren en la
memoria (hash recursin, evento 0) o hasta que se alcance el mximo de recursiones
preestablecido (hash bail, evento 1). En este ltimo caso, es an peor ya que la consulta se
termina procesando segn un plan alternativo. Si ocurren con frecuencia, la solucion puede
incluir: asegurarse que las estadsticas de los ndices estn actualizadas, reescribir las consultas,
experimentar para cambiar el query plan.
Missing column statistics: Este evento indica que las estadsticas (sobre las que se basa el
query plan) estn desactualizadas para esa consulta, por lo que el query optimizer no evalua las
opciones correctamente. Esto da lugar a planes de ejecucin que no son ptimos.
Missing join predicate: avisa que hay un join sin una clausula on (un outer join).
Sort warnings: Avisa que la memoria no es suficiente para albergar los datos que fueron
ordenados.
Scan started: sirve para ver los table e index scan. No es algo malo en s, pero si hay muchos
puede que falte algn ndice o que no se est usando adecuadamente. Por ms informacin
ver el documento de execution plan.

CORRELACIONAR CON DATOS DE PERFMON


Los datos de una traza de sql profiler se pueden correlacionar con los datos capturados mediante
perfmon (el monitor de rendimiento de windows) para ver cmo se hace:
http://msdn.microsoft.com/en-us/library/ms191152%28v=SQL.90%29.aspx

REFERENCIAS
How to use sql profiler :
http://msdn.microsoft.com/en-us/library/ff650699.aspx#scalenethowto15_topic2
Using the SQL server profiler :
http://www.sql-server-performance.com/tips/sql_server_profiler_tips_p1.aspx

using sql profiler (de microsoft):


http://msdn.microsoft.com/en-us/library/ms187929%28v=SQL.90%29.aspx

Vous aimerez peut-être aussi