Pregunta

Estoy familiarizado con SQL Server Vistas Indizadas (Oracle o Vistas Materializadas), podemos utilizar en nuestras aplicaciones OLAP.Ellos tienen la genial característica de ser capaz de usurpar un plan de ejecución y reasignar a la vista indizada w/out tener que cambiar el código existente.

Es decir.Digamos que tuve un procedimiento almacenado que era muy caro unirse.

SELECCIONE [COLUMNAS]
FROM Tabla1 INNER JOIN Tabla2 [DETALLES]
INNER JOIN Tabla3 [MONTÓN MÁS se UNE] ...

Si me fue autor de una vista indizada que tuvo un resultado similar se establece a continuación el Optimizador de Consultas es muy probable que enviar el procedimiento almacenado a mi vista indizada en contraposición a las tablas de base y tengo un gran aumento de rendimiento.

Ahora digo yo quería usar las vistas indizadas en un OLTP!? Me refiero a la mayoría de los OLTPs (como este sitio) son relativamente lectura pesada, si tienen cara se une entonces podríamos velocidad de ellos hasta una tonelada Y potencialmente reducir la contención de bloqueo (http://www.codinghorror.com/blog/archives/001166.html).Aún mejor es que usted no tiene que cambiar ningún código, sólo el autor de la vista indizada.

Pero esto también significa que la base de datos se hace más grande, ya que es necesario mantener una copia de los datos en la vista indizada...

Alguien ha utilizado alguna vez las vistas indizadas para resolver la contención o problemas de velocidad en un OLTP?Cómo es que nunca he visto esta en uso?

¿Fue útil?

Solución

Las vistas materializadas puede ser útil para la presentación de informes en contra de OLTP, sobre todo, grandes cantidades de filas que se agregan para obtener los resultados.Los requisitos de espacio son completamente dependientes de la cantidad de datos que desea guardar.Piense en ello como una memoria caché.

El difícil equilibrio entre cómo reciente de los datos para los informes, y cuánto de un éxito que usted puede tomar en el rendimiento de OLTP.Si algo rancio de datos está bien, usted puede ser capaz de programar las actualizaciones a los puntos de vista durante un tiempo cuando la actividad del sistema es baja.

El momento no podía, y la necesidad muy actual de datos, que terminó con algunos de desarrollo personalizado.Cada actualización de la tabla de base disparó un disparador que escribió un registro a una tabla de transacciones.La vista se veía en la memoria caché agregado, además de la delta almacenados en la tabla de transacciones.Como sistema de recursos permitidos, las transacciones se han aplicado para el total de la tabla como delta transacciones.Esto me permitió hasta la segunda base de datos, un buen rendimiento en los informes (la única agregación sucediendo era transacciones recientes) y bastante poca carga en la base de datos (sólo duplicar el tamaño de cada escritura, no vuelva a calcular un enorme agregado de cada vez).

Por desgracia, era el complejo de mantener, y no simple uso de herramientas integradas.Si usted puede esperar en su presentación de informes de datos, que a menudo es mejor utilizar el construido en las vistas materializadas y aplazar la actualización.

Otros consejos

Utilizamos las vistas materializadas para acelerar las cosas donde yo trabajo.Más a menudo para los informes en contra del sistema OLTP.Muchos de nuestros informes de ejecución de un almacén de datos, pero desde que actualice el almacén de la noche a la mañana, hasta el momento los datos tiene que venir de la OLTP tablas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top