Um dos maiores benefícios do uso de uma visão materializada é que a Oracle cuida de manter os dados sincronizados. Se você possui uma tabela agregada separada, é responsável por manter os dados sincronizados. Isso geralmente requer uma quantidade razoável de código e uma quantidade decente de testes, e a maioria das organizações consegue cometer erros que deixam buracos que fazem com que a tabela agregada fique fora de sincronia. Isso é particularmente verdadeiro quando você tenta implementar atualizações incrementais da tabela agregada.
Outro grande benefício é que, dependendo das configurações, o Oracle pode usar a reescrita de consulta para usar visualizações materializadas quando os usuários emitem consultas em tabelas base. Portanto, por exemplo, se você possui vários relatórios existentes em uma tabela de detalhes que produzem resultados agregados diários, mensais e anuais, é possível criar uma exibição materializada na tabela base que agrega os dados diariamente e o otimizador pode utilize essa visualização materializada para todas as suas consultas existentes. Isso facilita muito a otimização das cargas de trabalho de relatórios em um data warehouse, sem tentar reescrever dezenas de relatórios para usar sua nova tabela agregada ou mexer DBMS_ADVANCED_REWRITE
para forçar suas próprias reescritas das consultas.
ON DEMAND
é o comportamento de atualização padrão. A vista materializada deve ser criada comON COMMIT
. e manter a visualização materializada não é gratuito. Provavelmente é mais barato que um gatilho.Um bom argumento para usar MVs é que, algumas vezes, você deseja agregar dados e obter essas informações resumidas de tabelas grandes com frequência e rapidez. Sem visualizações materializadas, é necessário desonormalizar algumas de suas tabelas e manter os agregados via código ou varrer repetidamente grandes conjuntos de linhas. De qualquer forma, nem sempre é aceitável, especialmente com o painel e aplicativos on-line semelhantes. Se você mantiver os resultados em tabelas separadas, complica o código do aplicativo e, como o @Justin Cave diz, você ficará encarregado de garantir que os dados agregados manualmente estejam sincronizados. com os dados da tabela original.
fonte
Não é uma pessoa da Oracle, mas outro caso de uso seria soluções de terceiros. Eles geralmente não oferecem suporte a alterações nos designs, mas uma MV seria "invisível" ao código, mas fornece acesso a relatórios / extrações de dados personalizados.
Não é gratuito, pois o custo terá custos de armazenamento e custos de tempo de inserção / atualização potencialmente impactantes, mas isso pode ser compensado pelo tempo gasto na recuperação dos dados materializados versus uma "visão direta" ou na criação de tabelas reais e na manutenção do ETL circundante.
Por fim, isso pode anular seu contrato de suporte com o fornecedor, consulte seu advogado-blá-blá-blá
fonte
Em vez de ir diretamente para as visualizações materializadas, deixe-me explicar as visualizações .
Basicamente, as visualizações existem logicamente, diferentemente das tabelas. Se queremos ocultar certas colunas para os usuários, não podemos usar tabelas. Criando uma visão, podemos alcançar a segurança.
Caso de uso: se uma visualização estiver relacionada internamente com 10 tabelas, além de agrupar por e as funções tiverem milhões de linhas, leva muito tempo para ser executado.
Então, aqui vem as visualizações materializadas nos ajudam a obter dados mais rapidamente. As visualizações materializadas existem fisicamente no banco de dados. Sempre que a tabela base é atualizada, a visualização Materializado é atualizada.
fonte
Uma visão materializada pode ser configurada para atualizar automaticamente periodicamente. Uma tabela pode precisar de código adicional para truncar / recarregar dados.
exemplo: a visualização materializada com dados de várias tabelas pode ser configurada para atualizar automaticamente fora do horário de pico. Uma tabela física precisaria de código adicional para truncar / recarregar dados.
A segurança pode ser melhor controlada em uma exibição materializada, em vez de em uma tabela.
fonte
Uma visão materializada é um objeto de banco de dados que contém os resultados de uma consulta. São cópias locais dos dados localizadas remotamente ou são usadas para criar tabelas de resumo com base nas agregações dos dados de uma tabela. http://www.oraappdata.com/2016/04/materialized-view.html
fonte