¿Cuál es la diferencia entre vistas y vistas materializadas en Oracle?

Respuestas:

355

Las vistas materializadas se basan en disco y se actualizan periódicamente según la definición de la consulta.

Las vistas son solo virtuales y ejecutan la definición de consulta cada vez que se accede a ellas.

dacracot
fuente
54
Además, cuando necesita rendimiento en datos que no necesitan estar actualizados hasta el segundo momento, las vistas materializadas son mejores, pero sus datos serán más antiguos que en una vista estándar. Por lo general, los informes de BI obtienen muchos beneficios de las vistas materializadas.
Marthinus
29
@Marthinus - eso es correcto, excepto en el caso de una vista materializada que es REFRESH ON COMMIT - el MV devolverá exactamente los datos que se han confirmado.
Jeffrey Kemp
2
¿Cuál es el significado de DISK based? ¿Significa que la tabla no es parte de DISK? ¿Está almacenado en un archivo y el acceso al DISCO es más rápido que el acceso al archivo ...?
Kanagavelu Sugumar
1
@KanagaveluSugumar Sí, las tablas reales también se escriben en el disco.
Dacracot
55
@dacracot ¡Gracias! creo que quiere decir que no sean tablas DB en el DISCO; Esta MVIEW también mantiene una tabla resolviendo todas las uniones. Para que en el tiempo de ejecución el acceso a una sola tabla sea suficiente; y no es necesario consultar en varias tablas las condiciones de unión, que generalmente se realiza mediante la vista normal. ¡Gracias!
Kanagavelu Sugumar
332

Puntos de vista

Evalúan los datos en las tablas subyacentes a la definición de la vista en el momento en que se consulta la vista . Es una vista lógica de sus tablas, sin datos almacenados en ningún otro lugar.

La ventaja de una vista es que siempre le devolverá los datos más recientes . La desventaja de una vista es que su rendimiento depende de cuán buena sea la declaración de selección en la que se basa la vista. Si la instrucción select utilizada por la vista une muchas tablas, o usa combinaciones basadas en columnas no indexadas, la vista podría funcionar mal.

Vistas materializadas

Son similares a las vistas normales, ya que son una vista lógica de sus datos (basada en una instrucción select), sin embargo, el conjunto de resultados de la consulta subyacente se ha guardado en una tabla . La ventaja de esto es que cuando consulta una vista materializada, consulta una tabla , que también puede indexarse.

Además, dado que todas las uniones se han resuelto en el momento de actualización de la vista materializada, usted paga el precio de la unión una vez (o tan a menudo como actualiza su vista materializada), en lugar de cada vez que selecciona de la vista materializada. Además, con la reescritura de consultas habilitada, Oracle puede optimizar una consulta que selecciona desde el origen de su vista materializada de tal manera que en su lugar lee desde su vista materializada. En situaciones en las que crea vistas materializadas como formas de tablas agregadas o como copias de consultas ejecutadas con frecuencia, esto puede acelerar enormemente el tiempo de respuesta de su aplicación de usuario final. Sin embargo, la desventaja es que los datos que obtiene de la vista materializada están tan actualizados como la última vez que se actualizó la vista materializada .


Las vistas materializadas se pueden configurar para actualizarse manualmente, en un horario establecido o en función de la base de datos que detecta un cambio en los datos de una de las tablas subyacentes . Las vistas materializadas pueden actualizarse gradualmente combinándolas con registros de vistas materializadas, que actúan como fuentes de captura de datos de cambio en las tablas subyacentes.

Las vistas materializadas se utilizan con mayor frecuencia en aplicaciones de almacenamiento de datos / inteligencia de negocios donde consultar tablas de hechos grandes con miles de millones de filas daría como resultado tiempos de respuesta de consulta que resultaron en una aplicación inutilizable.


Las vistas materializadas también ayudan a garantizar un momento constante en el tiempo, similar al aislamiento de instantáneas .

Mike Williamson
fuente
99
+1 para la explicación detallada, pero ¿cuál es la desventaja de la reescritura de consultas? Si la reescritura de consultas permitirá a Oracle optimizar la consulta aún más, SIEMPRE deberíamos habilitar la reescritura de consultas, ¿no?
Rosdi Kasim
66
@Rosdi, lo dijo: "los datos que obtiene de la vista materializada están tan actualizados como la última vez que se actualizó la vista materializada"
Jeffrey Kemp
49

Una vista usa una consulta para extraer datos de las tablas subyacentes.

Una vista materializada es una tabla en el disco que contiene el conjunto de resultados de una consulta.

Las vistas materializadas se utilizan principalmente para aumentar el rendimiento de la aplicación cuando no es factible o deseable usar una vista estándar con índices aplicados. Las vistas materializadas se pueden actualizar de forma regular, ya sea a través de activadores o mediante la ON COMMIT REFRESHopción. Esto requiere algunos permisos adicionales, pero no es nada complejo. ON COMMIT REFRESHha estado en su lugar desde al menos Oracle 10.

Jeremiah Peschka
fuente
Hay una opción de "ACTUALIZAR EN COMPROMISO" que se puede especificar en una Vista materializada
Hybris95
¡Gracias! Actualizaré la respuesta. ¿Sabe cuándo se agregó esta funcionalidad a Oracle?
Jeremiah Peschka
20

Las vistas son esencialmente estructuras lógicas en forma de tabla pobladas sobre la marcha por una consulta determinada. Los resultados de una consulta de vista no se almacenan en ningún lugar del disco y la vista se vuelve a crear cada vez que se ejecuta la consulta. Las vistas materializadas son estructuras reales almacenadas en la base de datos y escritas en el disco. Se actualizan en función de los parámetros definidos cuando se crean.

usuario12786
fuente
¿Cuál es el significado de DISK based? ¿Significa que la tabla no es parte de DISK? ¿Está almacenado en un archivo y el acceso al DISCO es más rápido que el acceso al archivo ...?
Kanagavelu Sugumar
18

Vista materializada : una tabla en un disco que contiene el conjunto de resultados de una consulta

Vista sin alimentación : una consulta que extrae datos de la tabla subyacente

fn27
fuente
7

Ver: Ver es solo una consulta con nombre. No almacena nada. Cuando hay una consulta a la vista, ejecuta la consulta de la definición de la vista. Los datos reales provienen de la tabla.

Vistas materializadas: almacena datos físicamente y se actualiza periódicamente. Al consultar MV, proporciona datos de MV.

smshafiqulislam
fuente
2

Agregando a la respuesta bastante minuciosa de Mike McAllister ...

Las vistas materializadas solo se pueden configurar para que se actualicen automáticamente a través de la base de datos, detectando cambios cuando el compilador considera que la consulta de la vista es simple . Si se considera demasiado complejo, no podrá configurar lo que son esencialmente desencadenantes internos para rastrear los cambios en las tablas de origen para actualizar solo las filas cambiadas en la tabla mview.

Cuando crea una vista materializada, encontrará que Oracle crea tanto la vista mview como una tabla con el mismo nombre , lo que puede hacer que las cosas sean confusas.

Estofado S
fuente
Las tablas que admiten una vista materializada no tienen el mismo nombre que la vista.
Jeffrey Kemp
@JeffreyKemp, ¿estás seguro? La respuesta aceptada aquí stackoverflow.com/a/33552513 afirma lo contrario. Aunque sí, esto puede haber sido diferente en 2010 cuando comentaste ...
leqid
Mi comentario anterior debe haber estado en una versión anterior (probablemente 9i). Tienes razón, los MV obtienen una tabla con el mismo nombre al menos en las versiones modernas.
Jeffrey Kemp
1

Las vistas materializadas son la vista lógica de los datos controlados por la consulta de selección, pero el resultado de la consulta se almacenará en la tabla o disco, también la definición de la consulta también se almacenará en la base de datos.

El rendimiento de la vista materializada es mejor que la vista normal porque los datos de la vista materializada se almacenarán en la tabla y la tabla puede indexarse ​​de manera más rápida para la unión. declaración de unión como en el caso de la vista.

Otra diferencia incluye en el caso de Vista, siempre obtenemos los datos más recientes, pero en el caso de la vista Materializada, necesitamos actualizar la vista para obtener los datos más recientes. En el caso de la vista Materializada, necesitamos un activador adicional o algún método automático para que podamos mantener actualizado el MV, esto no es necesario para las vistas en la base de datos.

Dhirendra Gautam
fuente