Quiero averiguar qué está causando las altas compilaciones SQL (no las recompilaciones) que estoy viendo en los contadores del monitor de rendimiento.
Aquí está mi opinión: si estoy viendo muchas compilaciones SQl, significa que las consultas en nuestro sistema no se almacenan en caché por los siguientes motivos:
- Muchas consultas ad hoc
Ejecutando consultas que SQl no almacena en caché, por ejemplo:
ACTUALIZAR table1 SET col1 = 'Cadena de más de 8000 caracteres .....' WHERE key_column = some int
Los planes se están agotando y se están eliminando de la memoria caché porque: la memoria caché se está quedando sin espacio o los planes no se están utilizando el tiempo suficiente.
Lo único que se acerca a la captura de inserciones de caché en el generador de perfiles es Procedimientos almacenados-> SP: CacheInserts, pero solo se ocupa de la caché de procedimientos almacenados.
Así que intenté lo siguiente para obtener consultas ad hoc:
SELECT [cp].[refcounts] -- when Refcounts becomes 0, plan is excluded from cache.
, [cp].[usecounts]
, [cp].[objtype]
, st.[dbid]
, st.[objectid]
, st.[text]
, [qp].[query_plan]
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text ( cp.plan_handle ) st
CROSS APPLY sys.dm_exec_query_plan ( cp.plan_handle ) qp ;
Pensé que las consultas que causaron las compilaciones deberían ser las que tienen objtype = Adhoc, pero esto también podría relacionarse con las recompilaciones. Ahora tengo que ejecutar el generador de perfiles, capturar consultas que causan recompilaciones y luego eliminarlas de la lista anterior.
¿Voy en la dirección correcta?
¿Hay una sola consulta que pueda usar para lograr compilaciones SQL sin demasiado trabajo?
Recursos que me ayudaron a lograr el conocimiento anterior:
http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/954b4fba-3774-42e3-86e7-e5172abe0c83
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=143946
http: //technet.microsoft.com/en-nz/library/cc966425(en-us).aspx
http://www.sqlservercentral.com/Forums/Topic914951-360-1.aspx
Cualquier ayuda es muy apreciada.