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


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

Author: juan, 2008-09-18

8 answers

Las vistas materializadas se basan en discos 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.

 299
Author: dacracot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-30 20:36:50

Vistas

Evalúan los datos en las tablas subyacentes a la definición de 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 te devolverá los últimos datos. La desventaja de una vista es que su rendimiento depende de qué tan buena sea la instrucción select en la que se basa la vista. Si la instrucción select utilizada por la vista se une a muchas tablas, o utiliza joins sobre la base de columnas no indexadas, la vista podría tener un rendimiento deficiente.

Vistas materializadas

Son similares a las vistas regulares, 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, está consultando una tabla, que también puede ser indexada.

Además, porque todas las uniones se han resuelto en materializado tiempo de actualización de la vista, paga el precio de la unión una vez (o tan a menudo como actualice su vista materializada), en lugar de cada vez que seleccione 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 se crean vistas materializadas como formas de tablas agregadas, o como copias de consultas ejecutadas con frecuencia, esto puede acelere el tiempo de respuesta de su aplicación de usuario final. Sin embargo, el inconveniente de es que los datos que obtiene de la vista materializada solo 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 basado en la base de datos que detecta un cambio en los datos de una de las tablas subyacentes. Las vistas materializadas se pueden actualizar de forma incremental combinándolas con vistas materializadas ver registros, 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 data warehousing / business intelligence, donde consultar grandes tablas de datos con miles de millones de filas resultaría en tiempos de respuesta de consulta que resultarían en una aplicación inutilizable.


Las vistas materializadas también ayudan a garantizar un momento consistente en el tiempo, similar a snapshot isolation.

 292
Author: Mike Williamson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-29 16:12:30

Una vista utiliza 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 utilizar una vista estándar con índices aplicados a ella. Las vistas materializadas se pueden actualizar regularmente a través de disparadores o utilizando la opción ON COMMIT REFRESH. Esto requiere algunos permisos adicionales, pero no es nada complejo. ON COMMIT REFRESH ha estado en su lugar desde al menos Oracle 10.

 45
Author: Jeremiah Peschka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-06 15:51:32

Las vistas son esencialmente estructuras lógicas tipo tabla pobladas sobre la marcha por una consulta dada. 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 dentro de la base de datos y escritas en el disco. Se actualizan en función de los parámetros definidos cuando se crean.

 17
Author: user12786,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-18 15:31:54

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

Vista no materializada - una consulta que extrae datos de la tabla subyacente

 13
Author: fn27,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-13 09:44:56

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

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

 2
Author: smshafiqulislam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-27 18:02:21

Añadiendo a la respuesta bastante completa de Mike McAllister...

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

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

 1
Author: Stew S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 04:05:17

Una vista no es más que una consulta SQL, toma la salida de una consulta y la hace aparecer como una tabla virtual, que no ocupa espacio de almacenamiento ni contiene datos

Pero Las vistas materializadas son objetos de esquema, que almacenan los resultados de una consulta en un objeto de esquema separado(es decir, ocupan espacio de almacenamiento y contienen datos). Esto indica que la vista materializada está devolviendo una copia físicamente separada de los datos de la tabla

 1
Author: Dlucidone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-08 05:29:28