Coletando Estatísticas do Catálogo Precisas, Incluindo Recursos de Estatísticas Avançados

Estatísticas de banco de dados precisas são críticas para otimização de consulta. Execute RUNSTATS operações de comando regularmente em quaisquer tabelas que sejam críticas para consultar o desempenho.

Você também pode querer coletar estatísticas sobre tabelas de catálogo do sistema, se um aplicativo consultar essas tabelas diretamente e se houver atividade de atualização de catálogo significativa, como a resultante da execução de instruções de linguagem de definição de dados (DDL). A coleta de estatísticas automática pode ser ativada para permitir que o servidor de dados Db2® execute automaticamente uma operação de comando RUNSTATS . A coleta de estatísticas em tempo real pode ser ativada para permitir que o servidor de dados Db2 forneça estatísticas ainda mais oportunas, coletando-as imediatamente antes de as consultas serem otimizadas.

Se você estiver coletando estatísticas manualmente usando o comando RUNSTATS , use as opções a seguir no mínimo:
RUNSTATS ON TABLE DB2USER.DAILY_SALES
  WITH DISTRIBUTION AND SAMPLED DETAILED INDEXES ALL
As estatísticas de distribuição tornam o otimizador ciente de defasamento de dados. As estatísticas detalhadas do índice fornecem mais detalhes sobre a E/S necessária para buscar páginas de dados quando a tabela é acessada usando um índice em particular. A coleta de estatísticas detalhadas do índice usa tempo de processamento e memória consideráveis para tabelas grandes. A opção SAMPLED fornece estatísticas detalhadas do índice com quase a mesma precisão mas requer uma fração da CPU e da memória. Essas opções são usadas pela coleta de estatísticas automáticas quando um perfil estatístico não é fornecido para uma tabela.

Para melhorar o desempenho da consulta, considere coletar estatísticas mais avançadas, como estatísticas do grupo de colunas ou estatísticas LIKE, ou criar visualizações estatísticas.

As visões estatísticas são úteis ao reunir estatísticas para relacionamentos complexos. A coleta de estatísticas para visualizações estatísticas pode ser automatizada por meio do recurso de coleta de estatísticas automáticas em Db2. A ativação ou desativação da coleta estatística automática de visualizações estatísticas é feita usando o parâmetro de configuração do banco de dados auto_stats_views . Para ativar esta função, emita o seguinte comando:
update db cfg for dbname using auto_stats_views on
Para desativar esse recurso, emita o seguinte comando:
update db cfg for dbname using auto_stats_views off
Este parâmetro de configuração do banco de dados está desligado por padrão. O comando que é emitido para coletar automaticamente estatísticas sobre visões estatísticas é equivalente ao seguinte comando:
runstats on view view_name with distribution
A coleta de estatísticas para uma grande visão de tabela ou estatística pode ser demorada. As estatísticas da mesma qualidade muitas vezes podem ser coletadas considerando apenas uma pequena amostra dos dados gerais. Considere ativar a amostragem automática para todas as coleções estatisticas de fundo; isso pode reduzir o tempo de coleta de estatística. Para ativar esta função, emita o seguinte comando:
update db cfg for dbname using auto_sampling on

As estatísticas coletadas nem sempre são exatas. Além de fornecer acesso de dados mais eficiente, um índice pode ajudar a fornecer estatísticas mais precisas para colunas que muitas vezes são usadas na consulta predicados. Quando as estatísticas são coletadas para uma tabela e seus índices, os objetos de índice podem fornecer estatísticas precisas para as colunas de índice principais.

Como ativar a coleta automática de estatísticas do grupo de colunas

O otimizador usa estatísticas de grupo de colunas para dar conta de correlação estatística ao estimar a seletividade combinada de múltiplos predicados e ao computar o número de agrupamentos distintos para operações que agrupam dados como GROUP BY ou DISTINCT.  A coleta de estatísticas do grupo de colunas pode ser automatizada através do recurso de coleta de estatísticas automáticas em Db2. A ativação ou desativação da coleta automática de estatísticas do grupo de colunas é feita usando o parâmetro de configuração do banco de dados auto_cg_stats . Para ativar esta função, emita o seguinte comando:
update db cfg for dbname using auto_cg_stats on

A coleta automática de estatísticas do grupo de colunas irá gerar um perfil descrevendo as estatísticas que precisam ser coletadas. Se um perfil de usuário não existir, a coleta de estatísticas de antecedente executará inicialmente uma descoberta automática de estatísticas do grupo de colunas esperadas dentro da tabela e configurará um perfil de estatísticas. Após a conclusão da descoberta, são reunidas estatísticas sobre a tabela usando o recurso de perfil de estatísticas existente. O conjunto de grupos de colunas descoberto é preservado nas descobertas subsequentes.

Se um perfil de estatísticas já estiver configurado manualmente, ele será usado como está e a descoberta não será realizada. O perfil de estatísticas gerado automaticamente pode ser usado juntamente com qualquer opção PROFILE do comando RUNSTATS . Se o perfil for atualizado usando a opção UPDATE PROFILE , qualquer descoberta adicional está bloqueada na tabela, mas o conjunto de estatísticas do grupo de colunas já configurado no perfil continuará sendo coletado automaticamente assim como com um manual RUNSTATS que inclui a opção USE PROFILE .

O comando UNSET PROFILE pode ser usado para remover o perfil de estatísticas para reiniciar o processo de descoberta.

Para desativar esse recurso, emita o seguinte comando:
update db cfg for dbname using auto_cg_stats off

A desativação deste recurso impedirá qualquer descoberta adicional, mas os perfis de estatística persisirão e continuarão a ser usados.  Se houver a necessidade de remover o perfil, use a opção UNSET PROFILE de RUNSTATS.