2009-06-02 16 views
5

Quiero utilizar el almacenamiento en caché de datos en mi aplicación .net C#. Hasta el momento, he agregado almacenamiento en caché de datos y he agregado dependencias de caché SQL en tablas específicas. Pero eso no es lo suficientemente bueno. Estas tablas se actualizarán con demasiada frecuencia, pero no son relevantes para muchos de los objetos en caché. Esto hará que el almacenamiento en caché de datos sea casi inútil porque se enjuagará frecuentemente. Quiero implementar la dependencia de caché SQL en filas específicas para cada objeto. ¿Cómo puedo hacer eso?¿Cómo creo una dependencia de caché sql específica de fila?

+0

La documentación para aspnet_regsql sólo menciona las tablas, pero ¿ha tratado de usarlo en contra de un punto de vista? Dudo que va a funcionar, pero podría ser digno de un tiro. –

Respuesta

5

Debe comprender cómo funciona SqlDependency. Usted subscribe a result set and get notified when that result set has changed. Puede suscribirse a cualquier tipo de conjunto de resultados, es decir, cualquier tipo de consulta, siempre que se ajuste al restrictions of the supported statements. Realmente no importa si es una mesa o una vista.

Así que técnicamente puede suscribirse para recibir notificaciones específicas mediante el envío de una consulta específica para esa fila, es decir. con una cláusula WHERE codificada. Tendría que cambiar su código para recuperar y almacenar en caché solo los datos necesarios en una fila por fila en lugar de recuperar tablas enteras y almacenarlos en la memoria caché. Diablos, tendrías que hacer eso de todos modos si al menos estás preocupado por el tamaño de esas tablas. El almacenamiento en caché de tablas enteras solo debe realizarse para los datos de catálogo y de referencia que cambian con poca frecuencia o no cambian en absoluto.

También puede optar por recuperar y almacenar en caché las particiones de los datos, es decir. rangos individuales de claves (digamos entre 'A' y 'D', 'E' y 'H' etc. y suscríbase para recibir notificaciones de esa partición de datos específica.

Si desea understand how SqlDependency works mi blog tiene algunos artículos que lo cubren , incluyendo common programming pitfalls of SqlDependency y deployment problems with SqlDependency.

+0

cierto cuando digo 'hardcoded DONDE' No me refiero a codificar las claves de búsqueda. Puede usar @parameters. De acuerdo, lo que quise decir es que debe agregar una cláusula WHERE para restringir el conjunto de resultados solo a su (s) fila (s) de interés. –

Cuestiones relacionadas