AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 23280
Accepted
jrara
jrara
Asked: 2012-08-29 06:42:17 +0800 CST2012-08-29 06:42:17 +0800 CST 2012-08-29 06:42:17 +0800 CST

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

  • 772

Sou novo em bancos de dados Oracle. Se entendi corretamente, a visão materializada é uma visão cujo conjunto de resultados é salvo como uma tabela física no banco de dados e essa visã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?

oracle performance
  • 6 6 respostas
  • 84802 Views

6 respostas

  • Voted
  1. Best Answer
    Justin Cave
    2012-08-29T06:51:55+08:002012-08-29T06:51:55+08:00

    Um dos maiores benefícios de usar uma visão materializada é que a Oracle cuida de manter os dados sincronizados. Se você tiver uma tabela agregada separada, será responsável por manter os dados sincronizados. Isso geralmente requer uma quantidade razoável de código e uma quantidade razoável 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. Assim, por exemplo, se você tiver vários relatórios existentes em uma tabela de detalhes que produz resultados agregados diários, mensais e anuais, você pode criar uma visão materializada na tabela base que agrega os dados em nível diário e o otimizador pode utilize essa visualização materializada para todas as suas consultas existentes. Isso torna muito mais fácil otimizar as 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.

    • 65
  2. Gordon Bell
    2012-08-29T06:50:10+08:002012-08-29T06:50:10+08:00

    As visualizações materializadas são atualizadas automaticamente à medida que suas tabelas base são atualizadas.

    • 14
  3. NoChance
    2012-08-29T07:02:52+08:002012-08-29T07:02:52+08:00

    Um bom caso 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, você precisa desnormalizar algumas de suas tabelas e manter as agregações por meio de código ou verificar repetidamente grandes conjuntos de linhas. De qualquer maneira nem sempre é aceitável, especialmente com o painel e aplicativos online semelhantes. Se você mantiver os resultados em tabelas separadas, complicará o código da sua aplicação e, como diz o @Justin Cave, ficará responsável por garantir que os dados agregados manualmente estejam sincronizados. com os dados da tabela original.

    • 10
  4. billinkc
    2012-08-29T07:44:57+08:002012-08-29T07:44:57+08:00

    Não é uma pessoa da Oracle, mas outro caso de uso seria soluções de terceiros. Eles geralmente não oferecem suporte para você fazer alterações em seus projetos, mas um MV seria "invisível" para seu código, mas forneceria acesso a relatórios/extrações de dados personalizados.

    Não é gratuito, pois terá custos de armazenamento e custos de tempo de inserção/atualização potencialmente impactantes, mas isso pode ser compensado pelo tempo gasto recuperando os dados materializados versus uma "visão direta" ou criando tabelas reais e mantendo o ETL circundante.

    Por fim, isso pode anular seu contrato de suporte com o fornecedor, consulte-seu-advogado-blá-blá-blá

    • 4
  5. Premraj
    2015-04-25T02:28:22+08:002015-04-25T02:28:22+08:00

    Em vez de ir diretamente para as visualizações materializadas, deixe-me explicar as visualizações .

    Basicamente, as visualizações existem logicamente ao contrário das tabelas. Se quisermos 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 visão estiver relacionada internamente com 10 tabelas junto com group by e as funções tiverem milhões de linhas, levará muito tempo para executar.

    Então aqui vem as visualizações materializadas que 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 Materializada é atualizada.

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

    • 3
  6. samroze
    2017-01-29T22:46:52+08:002017-01-29T22:46:52+08:00

    Uma visão materializada pode ser configurada para ser atualizada 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 visão materializada em vez de uma tabela.

    • 0

relate perguntas

  • Como encontrar as instruções SQL mais recentes no banco de dados?

  • Como posso consultar nomes usando expressões regulares?

  • Como determinar se um Índice é necessário ou necessário

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve