¿Por qué no usar una tabla en lugar de una vista materializada?

53

Soy nuevo en las bases de datos Oracle. Si he entendido correctamente, la vista materializada es una vista cuyo conjunto de resultados se guarda como una tabla física en la base de datos y esta vista / tabla se actualiza basándose en algún parámetro. Si la vista se guarda como una tabla física, ¿por qué no almacenar los datos en una tabla en primer lugar? Entonces, ¿cuál es el beneficio de usar la vista materializada en lugar de una tabla?

jrara
fuente

Respuestas:

59

Uno de los mayores beneficios de usar una vista materializada es que Oracle se encarga de mantener los datos sincronizados. Si tiene una tabla agregada separada, usted es responsable de mantener los datos sincronizados. Eso generalmente requiere una cantidad razonable de código y una cantidad decente de pruebas y la mayoría de las organizaciones logran cometer errores que dejan huecos que hacen que la tabla agregada se desincronice. Esto es particularmente cierto cuando intenta implementar actualizaciones incrementales de la tabla agregada.

Otro beneficio importante es que, dependiendo de la configuración, Oracle puede usar la reescritura de consultas para usar vistas materializadas cuando los usuarios emiten consultas en las tablas base. Entonces, por ejemplo, si tiene un montón de informes existentes contra una tabla detallada que produce resultados agregados diarios, mensuales y anuales, puede crear una vista materializada en la tabla base que agregue los datos a nivel diario y el optimizador puede utilizar esa vista materializada para todas sus consultas existentes. Esto hace que sea mucho más fácil optimizar las cargas de trabajo de informes en un almacén de datos sin tratar de volver a escribir docenas de informes para usar su nueva tabla agregada o meterse con ellos DBMS_ADVANCED_REWRITEpara forzar sus propias reescrituras de las consultas.

Justin Cave
fuente
14

Las vistas materializadas se actualizan automáticamente a medida que se actualizan sus tablas base.

Gordon Bell
fuente
1
Tenga en cuenta que ON DEMANDes el comportamiento de actualización predeterminado. La vista materializada se debe crear con ON COMMIT. y mantener la vista materializada no es gratis. Sin embargo, probablemente sea más barato que un disparador.
durette
10

Un buen caso para usar MV es que algunas veces desea agregar datos y obtener esta información resumida de tablas grandes con frecuencia y rapidez. Sin vistas materializadas, debe desonormalizar algunas de sus tablas y mantener los agregados mediante código o escanear repetidamente grandes conjuntos de filas. De cualquier manera, no siempre es aceptable, especialmente con el tablero de instrumentos y aplicaciones similares en línea. Si mantiene los resultados en tablas separadas, complicará el código de su aplicación y, como dice @Justin Cave, estará a cargo de asegurarse de que los datos agregados manualmente estén sincronizados. con los datos de la tabla original.

Ninguna posibilidad
fuente
4

No es una persona de Oracle, pero otro caso de uso sería soluciones de terceros. Por lo general, no le permiten realizar cambios en sus diseños, pero un MV sería "invisible" para su código, pero proporcionaría acceso a informes personalizados / extractos de datos.

No es gratis porque tendrá costos de almacenamiento y costos de tiempo de inserción / actualización potencialmente impactantes, pero eso puede compensarse con el tiempo dedicado a recuperar los datos materializados versus una "vista directa" o crear tablas reales y mantener el ETL circundante.

Finalmente, hacerlo puede anular su contrato de soporte con el proveedor, consulte a su abogado, bla, bla, bla

billinkc
fuente
2

En lugar de ir directamente a Vistas materializadas, permítanme explicar Vistas .

Básicamente, las vistas existen lógicamente a diferencia de las tablas. Si queremos ocultar ciertas columnas a los usuarios, no podemos hacerlo usando tablas. Creando una vista podemos lograr la seguridad.

Caso de uso: si una vista está relacionada internamente con 10 tablas junto con group by y las funciones tienen millones de filas, se tarda mucho tiempo en ejecutarse.

Así que aquí vienen las vistas materializadas que nos ayudan a obtener datos más rápido. Las vistas materializadas existen físicamente en la base de datos. Cada vez que se actualiza la tabla base, se actualiza la vista Materializada.

Las vistas materializadas se actualizan periódicamente en función de la definición de la consulta, la tabla no puede hacer esto.

Premraj
fuente
0

Se puede configurar una vista materializada para actualizarse automáticamente de forma periódica. Una tabla puede necesitar código adicional para truncar / recargar datos.

ejemplo: La vista materializada que tiene datos de varias tablas se puede configurar para actualizarse automáticamente durante las horas no pico. Una tabla física necesitaría un código adicional para truncar / recargar datos.

La seguridad se puede controlar mejor en una vista materializada en lugar de una tabla.

samroze
fuente
0

Una vista materializada es un objeto de base de datos que contiene los resultados de una consulta. Son copias locales de datos ubicados de forma remota, o se utilizan para crear tablas de resumen basadas en agregaciones de datos de una tabla. http://www.oraappdata.com/2016/04/materialized-view.html

Dayakark
fuente
1
Tenga en cuenta que la pregunta no era sobre qué es una vista materializada, sino sobre por qué y cómo usarla.
Twinkles