Estatísticas em Views Materializadas

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
lekinhu
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Seg, 12 Dez 2011 2:05 pm

Bom dia senhores.

Na ultima semana percebi uma certa dificuldade na hora de fazer algumas consultas em cima de uma view materializada, cujo refresh é feito toda madrugada (oracle 10g). A aparente lentidão desaperecia imediatamente após eu atualizar as estatísticas da view.

Pergunta: considerando que existe um indice nesta view, é possivel que o refresh esteja deixando as estatísticas defasadas?...Se sim, então seria um "best practice" atualizar as estatísticas da view apos o refresh? Vocês adotam outra estratégia?

Obrigado a todos.
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Lekinhu,

Não sei como é feito o refresh de sua matealized view.

Mas, se por acaso ele for do tipo FULL, a tabela base desta view é truncada antes de ser recarregada.

Eu recomendo que você use a package DBMS_STATS para atualizar as estatísticas da Materialized View (tabela base) e seus respectivos índices.

Abraços,

Sergio Coutinho
lekinhu
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Seg, 12 Dez 2011 2:05 pm

É FULL sim.
já imaginava que o melhor era atualizar apos cada refresh :)

Obrigado
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Olá lekinhu,

Sobre a atualização das estatísticas, não precisa fazer ela com 100% dos dados da tabela (COMPUTE).

Você pode elejer uma amostragem dos dados da tabela (ex: 45%), com os mesmos resultados de eficiência caso escolhesse fazer com 100% dos dados da tabela.

Gerando as estatísticas encima de uma amostragem dos dados, você demora menos tempo para completar a atualização das estatísticas da tabela base da Materialized View e seus índices.

Abraços,

Sergio Coutinho
ruibarros
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 93
Registrado em: Qui, 29 Jan 2009 11:44 am
Localização: Cuiabá
Rui Barros
OCP - Oracle Certified Professional

Olá Lekinhu,
Como nosso colega citou .. Eu também faria o seguinte...
DBMS stats gather (no esquema)

Outra opção boa que gosto de utilizar em Views Materializadas é a seguinte:
Refresh Force... sendo assim, segue um exemplo:

create materialized viw MV
refresh force on demand
start with to_date('09-02-2012 08:38:27', 'dd-mm-yyyy hh24:mi:ss') next sysdate + 1
...
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes