sql >> Base de Datos >  >> RDS >> Oracle

Actualización rápida al confirmar la vista materializada

No sé si el problema aún persiste, pero cuando eché un vistazo al artículo que proporcionaste, noté algo (que podría ser la solución aquí):

ON COMMIT Actualizar

Una vista materializada se puede actualizar automáticamente utilizando el método ON COMMIT. Por lo tanto, cada vez que se confirma una transacción que ha actualizado las tablas en las que se define una vista materializada, esos cambios se reflejan automáticamente en la vista materializada. La ventaja de usar este enfoque es que nunca tiene que recordar actualizar la vista materializada. La única desventaja es que el tiempo requerido para completar la confirmación será un poco más largo debido al procesamiento adicional involucrado. Sin embargo, en un almacén de datos, esto no debería ser un problema porque es poco probable que haya procesos simultáneos que intenten actualizar la misma tabla.

  • Observe la línea en negrita.

Entonces tenemos:

Tabla 7-1 Métodos de actualización BAJO DEMANDA

Opción de actualización Parámetro DescripciónCOMPLETO C Actualiza al volver a calcular la consulta de definición de la vista materializada.

RÁPIDO F Actualiza mediante la aplicación incremental de cambios a la vista materializada . Para las vistas materializadas locales, elige el método de actualización que el optimizador estima que es más eficiente. Los métodos de actualización considerados son FAST y FAST_PCT basados ​​en registros.

FAST_PCT P Se actualiza volviendo a calcular las filas en la vista materializada afectadas por las particiones modificadas en las tablas de detalles.

FUERZA ? Intenta una actualización rápida. Si eso no es posible, realiza una actualización completa. Para las vistas materializadas locales, elige el método de actualización que el optimizador estima que es más eficiente. Los métodos de actualización considerados son FAST, FAST_PCT y COMPLETE basados ​​en registros.

  • Observe las líneas en negrita.
  • Personalmente prefiero la opción FORCE.

¿Podría decirme si esto vuelve a ocurrir después de un tiempo (dependiendo de los parámetros de la base de datos y la máquina en la que se ejecuta, por lo que ni siquiera puedo indicarle cuánto)?

Cuándo es posible la actualización rápida

Es posible que no todas las vistas materializadas se actualicen rápidamente. Por lo tanto, utilice el paquete DBMS_MVIEW.EXPLAIN_MVIEW para determinar qué métodos de actualización están disponibles para una vista materializada.

Si no está seguro de cómo hacer que una vista materializada se actualice rápidamente, puede usar DBMS_ADVISOR.TUNE_MVIEW procedimiento, que proporciona un script que contiene las declaraciones necesarias para crear una vista materializada que se actualiza rápidamente.

Saludos