Pergunta

Quando e como a coleta de estatísticas de tabela deve ser realizada para Oracle, versão 9 e superior?Como você coletaria estatísticas para um grande banco de dados, onde a coleta de estatísticas colidiria com o "horário comercial".

Foi útil?

Solução

A coleta de estatísticas deve ser feita sempre que houver grandes alterações no conteúdo dos dados, por exemplo, um grande número de exclusões ou inserções.Se a estrutura da tabela mudou, você também deverá coletar estatísticas.É aconselhável utilizar a opção 'ESTIMAR'.

Faça isso como um processo automatizado fora do horário comercial, se possível, ou se tiver que fazer isso durante o horário comercial, escolha um horário em que haja acesso mínimo às tabelas para as quais deseja coletar estatísticas.

Outras dicas

Não concordo que você deva sempre reconstruir suas estatísticas depois de muitas exclusões ou inserções.Como sempre, depende.Em uma situação de data warehouse, ao reconstruir suas visualizações materializadas, você fará muitas exclusões e inserções, mas a estrutura básica dos dados não será alterada.

Você só precisa recalcular as estatísticas em uma tabela se houver um significativo mudança em seu conteúdo.Isso faz não significa necessariamente após muitas exclusões ou inserções, mas sim quando exclusões, inserções ou atualizações alteram materialmente o conteúdo em relação a possíveis planos de execução.

Se você estiver truncando tabelas e reconstruindo (o que redefinirá suas estatísticas), em vez de um cálculo de estatísticas caro, geralmente é melhor armazenar as estatísticas antes de truncá-las e restaurá-las depois de reconstruir a tabela.

Para salvar as visualizações atuais das estatísticas que você usa:

dbms_stats.export_table_stats

e para restaurá-los depois você usa:

dbms_stats.import_table_stats

(Existem procedimentos correspondentes para schema e database.)

Ao usar a estimativa (sample_percent), certifique-se de coletar pelo menos 10%.Abaixo disso pode produzir resultados muito questionáveis.

Considere fazer backup das estatísticas atuais ao coletar - dessa forma você pode compará-las (se estiver interessado) e possivelmente restaurá-las se suas novas estatísticas causarem problemas.Tenha em mente que as estatísticas são usadas para determinar os planos de execução – você só pode querer coletá-las se quiser que os planos de execução sejam alterados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top