Por que não usar uma tabela em vez de uma visão materializada?


53

Eu sou novo nos bancos de dados Oracle. Se entendi corretamente, a exibição materializada é uma exibição cujo conjunto de resultados é salvo como uma tabela física no banco de dados e essa exibição / tabela é atualizada com base em algum parâmetro. Se a visualização é salva como uma tabela física, por que não armazenar os dados em uma tabela em primeiro lugar? Então, qual é o benefício de usar a visualização materializada em vez de uma tabela?

Respostas:


59

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_REWRITEpara forçar suas próprias reescritas das consultas.


14

As vistas materializadas são atualizadas automaticamente conforme as tabelas base são atualizadas.


11
Observe que esse ON DEMANDé o comportamento de atualização padrão. A vista materializada deve ser criada com ON COMMIT. e manter a visualização materializada não é gratuito. Provavelmente é mais barato que um gatilho.
durette 14/10

10

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.


4

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á


2

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.

As visualizações materializadas são atualizadas periodicamente com base na definição da consulta, a tabela não pode fazer isso.


0

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.


0

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


11
Observe que a pergunta não era sobre o que é uma visão materializada, mas sobre o porquê e como usá-la.
Twinkles
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.