2009-03-13 8 views
21

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.Preguntas de rendimiento para SQL Dependencia de caché

Así que se preguntan acerca de 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 la inserción, actualización y supresión sobre tablas afectadas?

Qué efecto (en cuanto al rendimiento) tendría, por ejemplo, 50000 notificaciones de consulta 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.

+0

¿Has encontrado alguna respuesta? También me gustaría saber una respuesta a esto. – niaher

+0

Lamento lo rancio que se ha vuelto esta pregunta, pero el consenso sobre el proyecto fue ir por otra ruta, así que nunca obtuvimos ningún resultado claro. Sin embargo, lo que he leído en las respuestas a continuación contiene información importante sobre estos temas. No creo que pueda otorgar muchas respuestas correctas, porque creo que todas las respuestas hasta la fecha son correctas, aunque no tengo ningún resultado. respalda esta sensación visceral. –

Respuesta

1

This page parece que tiene una buena información sobre la configuración de la técnica que se debe usar bien (si se me acaba de leer).

+2

Sí, estas son instrucciones para configurar la dependencia de caché, pero ese no es el problema. La pregunta es sobre la penalización de rendimiento para las operaciones de SQL cuando las solicitudes de chache son numerosas. Este artículo desafortunadamente no tiene información sobre eso en absoluto. :-( –

4

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.

+0

Dado que el proyecto se refería a la conexión simultánea múltiple a las tablas que podría haber roto esta "mejor práctica" que presentó, y me inclino a creer que tiene razón en su evaluación. –

1

Todo lo que puedo proporcionar es evidencia anecdótica del rendimiento, pero utilizamos 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 usa Perforce para control de 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 es bueno. 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 kilometraje puede variar.

2

Tienes 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 base de datos asociados con la dependencia de caché de SQL son simples y por lo tanto no incurren en una pesada costo de procesamiento en el servidor ".

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

6

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

vamos a ver lo que todas las medidas están ahí para SqlCacheDependency para trabajar y analizarlos:

  1. base de datos está habilitada para SqlCacheDependency.
  2. Una tabla indica que 'Empleado' está habilitado 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 caché sql. eso es todo.

Internamente:

  • paso 1. Crea una tabla 'ASPnet_sqlcachetablesforchangenotification' en la base de datos que almacenará el nombre de tabla 'Empleados' para el que está habilitado SqlCacheDependency. y agregue algunos procedimientos almacenados también.
  • 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'.
  • paso 3. habilita la aplicación para sqlcachedependency proporcionando la conexión de cadena y polltime.

siempre que haya un cambio en la tabla 'Empleado', se dispara el desencadenador que 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.

Cuestiones relacionadas