Plan de medición de desalojo


9

Tenemos un SQL Server 2016 SP1 con memoria máxima establecida en 24 GB.
Este servidor tiene una gran cantidad de compilaciones, solo el 10% de estas compilaciones provienen de consultas ad-hoc. Por lo tanto, los planes recién compilados deben almacenarse en la memoria caché del plan, pero el tamaño de la memoria caché del plan no aumenta (aproximadamente 3,72 GB).

Sospecho que hay una presión de memoria local que conduce a la eliminación de planes de la memoria caché. El límite de presión del caché del plan es de 5 GB. (75% de memoria objetivo visible de 0-4GB + 10% de memoria objetivo visible de 4GB-64GB + 5% de memoria objetivo visible> 64GB). Cuando un almacén en caché alcanza el 75% del límite de presión, los planes deben eliminarse del caché. En mi caso, el 75% de 5 GB es 3.75GB. Por lo tanto, es posible que esta sea la causa de las altas compilaciones.

¿Hay alguna manera de medir (perfmon, eventos extendidos, ...) la eliminación de los planes del caché? Entonces, ¿puedo estar seguro de que la presión de la memoria local es realmente la causa de las altas compilaciones?

Respuestas:


9

Hay un XEvent para eso:

query_cache_removal_statistics

Se produce cuando un plan de consulta se elimina de la caché del plan y las estadísticas históricas del objeto están a punto de destruirse

Entonces algo como:

CREATE EVENT SESSION [PlanCacheEvictions] ON SERVER 
ADD EVENT sqlserver.query_cache_removal_statistics(
    ACTION(sqlserver.sql_text))

Además, si el caché de su plan tiene una gran cantidad de planes de un solo uso, considere la opción de optimizar para cargas de trabajo ad hoc .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.