plan optimizar limpiar consultas cache sql sql-server-2005 sql-server-2008 sqlcachedependency

limpiar - optimizar consultas sql server 2014



Preguntas de rendimiento para la dependencia de caché de SQL (5)

Estoy trabajando en un proyecto en el que estamos pensando en utilizar SQLCacheDependency con SQL Server 2005/2008 y nos preguntamos cómo afectará esto al rendimiento del sistema.

Entonces nos estamos preguntando sobre las siguientes preguntas

¿Puede el número de objetos SQLCacheDependency (notificaciones de consulta) tener un efecto negativo en el rendimiento de SQL Server, es decir, en las operaciones de inserción, actualización y eliminación en las tablas afectadas?

¿Qué efecto (en cuanto al rendimiento) tendría, por ejemplo, 50000 notificaciones de consultas diferentes en una sola tabla en SQL Server 2005/2008 sobre la inserción y eliminación en esa tabla?

¿Hay alguna recomendación sobre cómo usar SQLCacheDependencies? ¿Qué hacer y qué no hacer oficial? Hemos encontrado algo de información en Internet, pero no hemos encontrado información sobre las implicaciones de rendimiento.

Si hay alguien aquí que tenga algunas respuestas a estas preguntas, sería genial.


Esta página parece tener una buena información sobre la configuración de la técnica que se debe usar bien (concedida, simplemente lo hice).


SQLCacheDependency se implementa como una vista indizada y cada vez que se modifica la tabla, este índice de vistas se modifica. tantos puntos de vista (objetos SQLCacheDependency) en la misma tabla significan un buen golpe para las modificaciones. Sin embargo, si tiene 1 vista (objeto SQLCacheDependency) por tabla, no debería tener problemas.

la notificación de cambio de memoria caché es asíncrona y se activa cuando el servidor tiene recursos.


Todo lo que puedo proporcionar es evidencia anecdótica del rendimiento, pero usamos SqlCacheDependency como una especie de "solución de mensajería" para una aplicación de gran empresa que procesa del orden de diez mil mensajes por hora.

La arquitectura básica es que nuestra empresa utiliza Perforce para el control de código fuente y tenemos un "servicio de suscripción" que recibe mensajes de una llamada de servicio web desencadenante que recibe llamadas en cada compromiso p4 e inserta un registro en una base de datos SQL. Nuestra aplicación tiene la configuración de dependencia para enviar notificaciones de suscripción para cada changeliest que afecte a una rama o ruta de acceso que esté supervisando.

El rendimiento está bien. El desencadenador se ejecuta en el orden de 200 ms y nunca hemos tenido una queja sobre la latencia de transmitir los mensajes a los usuarios finales.

Como siempre, su millaje puede variar.


Tiene razón, no se proporciona mucha información sobre esto, pero hay una frase relacionada con su pregunta en esta página http://msdn.microsoft.com/en-us/library/ms178604%28VS.80%29.aspx

"Las operaciones de la base de datos asociadas con la dependencia de la caché de SQL son simples y, por lo tanto, no implican un alto costo de procesamiento en el servidor".

Espero que esto te ayude aunque tu pregunta ya sea un poco vieja.


La dependencia de caché de SQL utilizando el mecanismo de sondeo no debe ser una carga en el servidor SQL o el servidor de aplicaciones.

Veamos todos los pasos para que sqlcachedependency funcione y analízalos:

  1. La base de datos está habilitada para sqlcachedependency.
  2. Una tabla dice ''Empleado'' está habilitada para sqlcachedependency. (puede ser cualquier cantidad de tablas)
  3. Web.config se actualiza para habilitar sqlcachedependency.
  4. La página donde está configurada la dependencia de la memoria caché de sql. Eso es.

Internamente:

  • El paso 1. crea una tabla ''ASPnet_sqlcachetablesforchangenotification'' en la base de datos que almacenará el nombre de la tabla ''Employee'' para la cual sqlcachedependency está habilitada. y agregue algunos procedimientos almacenados también.
  • El paso 2. inserta una entrada de tabla ''Empleado'' en la tabla ''ASPnet_sqlcachetablesforchangenotification''. También crea un desencadenador de eliminación de actualización de inserción en esta tabla ''Empleado''.
  • el paso 3. habilita la aplicación para sqlcachedependency al proporcionar la conexión de cadena y polltime.

siempre que haya un cambio en la tabla ''Empleado'', se desencadena el desencadenador y, a su vez, actualiza la tabla ''ASPnet_sqlcachetablesforchangenotification''. Ahora la aplicación sondea la base de datos, digamos cada 5000 ms y comprueba si hay algún cambio en la tabla ''ASPnet_sqlcachetablesforchangenotification''. si hay cambios, las cachés respectivas se eliminan de la memoria.

El gran beneficio del almacenamiento en caché combinado con la frescura de los datos (la mayoría de los datos pueden tener 5 segundos de antigüedad). La encuesta se lleva a cabo con un proceso en segundo plano que no debe ser un obstáculo de rendimiento. porque como puede ver en la lista anterior, la tarea requiere menos CPU.