SQL Saturday 329 - Novo Cardinality Estimator do SQL Server 2014

308 visualizações

Publicada em

Nesta apresentação discutimos sobre as mudanças ocorridas no CE do SQL Server 2014 e como a performance pode ser melhorada devido a isto.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
308
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

SQL Saturday 329 - Novo Cardinality Estimator do SQL Server 2014

  1. 1. Otimizando seus planos de execução com o SQL Server 2014 Cardinality Estimator Vitor Fava @sqlservermaniac| Vita Database Solutions vitor.fava@vitadatabasesolutions.com
  2. 2. PATROCINADORES
  3. 3. Me  Vitor Fava;  14 anos de experiência;  Princial Database Architect na Vita Database Solutions;  Pass Chapter Leader do SQLManiacs em SP;
  4. 4. Agenda  Processamento de uma consulta;  Otimização;  Importância da estimativa de cardinalidade;  Modelo de pressuposição;  Habilitar o novo CE;  O que mudou no SQL Server 2014;  O que fazer no caso de regressões de plano;
  5. 5. Como as pessoas veem o SQL Server
  6. 6. Como o SQL Server realmente é
  7. 7. Processamento de uma consulta  Parsing;  Binding;  Otimização;  Execução;
  8. 8. Otimização da consulta 1) O plano de execução já está em cache? Se não, continue; 2) É um plano trivial? Se não, continue; 3) Aplicar simplificação; 4) O plano possui um custo baixo? Se não, continue; 5) Iniciar a otimização baseada em custo; A) Regras basicas, comparar operações de join; B) O plano tem um custo < 0.2? Se não, continue; C) Explorar mais regras, alternar a ordem dos joins. Se o custo do plano é < 1.0, utilize-o. Se não, mas o MAXDOP é > 0 e o min cost > cost for parallelism, utilize um plano com paralelismo; 6) Explore todas as opções, mas escolha o plano menos custoso;
  9. 9. Importância da estimativa de cardinalidade  Quantidade de linhas por operador;  Utilização de um plano serial quando um plano com paralelismo é mais apropriado;  Estratégias de join ineficientes;  Utilização excessiva de memória;
  10. 10. Modelo de pressuposição  Independência;  Uniformidade;  Contido;  Inclusão;
  11. 11. Habilitar o novo CE  Compatibility Level;  Trace Flag 2312;
  12. 12. O que mudou no SQL Server 2014?  A primeira atualização no CE desde o SQL Server 7.0;  Melhora na avaliação de correlação entre múltiplos predicados;  Melhora na estimativa de uma chave ascendente;  Mudanças nos algoritmos de estimativa de joins;
  13. 13. Melhora na avaliação de correlação entre múltiplos predicados  Na ausência de estatísticas com múltiplas colunas, o antigo CE pressupõe que não existe correlação entre as colunas utilizadas no predicado;  Para assumir que existe correlação entra as colunas do predicado, o novo CE utiliza um processo chamado “exponential back-off”;  𝑝0 ⋅ 𝑝1 1 2 ⋅ 𝑝2 1 4 ⋅ 𝑝3 1 8
  14. 14. Demo Time
  15. 15. Melhora na estimativa de uma chave ascendente  Novos valores inseridos na tabela, não são imediatamente considerados no histograma;  O novo CE pressupõe que os valores solicitados pela consulta existem na tabela, mesmo que ainda não existam no histograma;  Densidade * Cardinalidade
  16. 16. Demo Time
  17. 17. Melhora na estimativa de um join simples  O antigo CE pressupõe que as colunas utilizadas em um join com duas tabelas, existam dos dois lados do join;  Caso existam predicados fora do join e que utilizem colunas de tabelas envolvidas no join, o antigo CE pressupõe algum nível de correção entre as colunas  Simple Containment X Base Containment
  18. 18. Demo Time
  19. 19. Testar o ambiente antes de migrar para o novo CE  A maioria dos planos será melhorado;  Poderão ocorrer regressões;  Para utilizar as novas funcionalidades do SQL Server 2014 e não habilitar o novo CE, deixe o compatibility level mais alto no banco de dados e habilite a trace flag 9481 no nível do servidor;
  20. 20. O que fazer no caso de uma regressão?  Manter o novo CE e realizar a análise das consultas que tiveram problemas;  Manter o novo CE e utilizar a trace flag 9481 na consultas que tiveram problemas;  Retornar ao antigo nível de compatibilidade e utilizar a trace flag 2312 para as consultas que tiveram um aumento de performance com o novo CE;  Retornar ao antigo CE no caso de uma grande queda de performance em consultas críticas ao sistema;
  21. 21. OBRIGADO!
  22. 22. Links  http://vfava.wordpress.com  https://groups.google.com/d/forum/sqlmaniacs  http://facebook.com/devSQL  Devsql-subscribe@yahoogroups.com

×