SlideShare uma empresa Scribd logo
1 de 22
Otimizando seus planos de execução
com o SQL Server 2014 Cardinality
Estimator
Vitor Fava
@sqlservermaniac| Vita Database Solutions
vitor.fava@vitadatabasesolutions.com
PATROCINADORES
Me
 Vitor Fava;
 14 anos de experiência;
 Princial Database Architect na Vita Database
Solutions;
 Pass Chapter Leader do SQLManiacs em SP;
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;
Como as pessoas veem o SQL Server
Como o SQL Server realmente é
Processamento de uma consulta
 Parsing;
 Binding;
 Otimização;
 Execução;
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;
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;
Modelo de pressuposição
 Independência;
 Uniformidade;
 Contido;
 Inclusão;
Habilitar o novo CE
 Compatibility Level;
 Trace Flag 2312;
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;
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
Demo Time
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
Demo Time
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
Demo Time
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;
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;
OBRIGADO!
Links
 http://vfava.wordpress.com
 https://groups.google.com/d/forum/sqlmaniacs
 http://facebook.com/devSQL
 Devsql-subscribe@yahoogroups.com

Mais conteúdo relacionado

Semelhante a SQL Saturday 329 - Novo Cardinality Estimator do SQL Server 2014

Treinamento Qlik - Desenvolvedores - Dia 02.pptx
Treinamento Qlik - Desenvolvedores - Dia 02.pptxTreinamento Qlik - Desenvolvedores - Dia 02.pptx
Treinamento Qlik - Desenvolvedores - Dia 02.pptxRodrigo Borges
 
Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7Matheus de Oliveira
 
Portfolio Grupo 4 ADS Unopar Desafios1-2-3-4
Portfolio Grupo 4 ADS Unopar Desafios1-2-3-4Portfolio Grupo 4 ADS Unopar Desafios1-2-3-4
Portfolio Grupo 4 ADS Unopar Desafios1-2-3-4Adilson Nascimento
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosEiti Kimura
 
SCOPE - Pontos de função - Não se arrisque com uma planilha
SCOPE - Pontos de função -  Não se arrisque com uma planilhaSCOPE - Pontos de função -  Não se arrisque com uma planilha
SCOPE - Pontos de função - Não se arrisque com uma planilhaFatto Consultoria e Sistemas
 
Devops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL ServerDevops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL ServerIgor Rosa Macedo
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)Dirceu Resende
 
Katálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial VKatálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial VKatálysis Científica
 
Introdução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceIntrodução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceAmazon Web Services LATAM
 
Refactoring Databases
Refactoring DatabasesRefactoring Databases
Refactoring DatabasesIsmael
 
5 coisas que todo desenvolvedor deveria saber sobre sql server
5 coisas que todo desenvolvedor deveria saber sobre sql server5 coisas que todo desenvolvedor deveria saber sobre sql server
5 coisas que todo desenvolvedor deveria saber sobre sql serverMarcos Freccia
 
Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010Fabrízio Mello
 
MySQL 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?MySQL 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?MySQL Brasil
 
QAOps e a sua impotância para a qualidade de software
QAOps e a sua impotância para a qualidade de softwareQAOps e a sua impotância para a qualidade de software
QAOps e a sua impotância para a qualidade de softwareSandy Maciel
 
Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009Fabrízio Mello
 
Banco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e RefatoraçãoBanco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e Refatoraçãoelliando dias
 
Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)Fabrízio Mello
 

Semelhante a SQL Saturday 329 - Novo Cardinality Estimator do SQL Server 2014 (20)

Treinamento Qlik - Desenvolvedores - Dia 02.pptx
Treinamento Qlik - Desenvolvedores - Dia 02.pptxTreinamento Qlik - Desenvolvedores - Dia 02.pptx
Treinamento Qlik - Desenvolvedores - Dia 02.pptx
 
Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7Ténicas de Database Refactoring para ambientes 24x7
Ténicas de Database Refactoring para ambientes 24x7
 
Portfolio Grupo 4 ADS Unopar Desafios1-2-3-4
Portfolio Grupo 4 ADS Unopar Desafios1-2-3-4Portfolio Grupo 4 ADS Unopar Desafios1-2-3-4
Portfolio Grupo 4 ADS Unopar Desafios1-2-3-4
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
 
SCOPE - Pontos de função - Não se arrisque com uma planilha
SCOPE - Pontos de função -  Não se arrisque com uma planilhaSCOPE - Pontos de função -  Não se arrisque com uma planilha
SCOPE - Pontos de função - Não se arrisque com uma planilha
 
Devops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL ServerDevops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL Server
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
 
Katálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial VKatálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial V
 
Introdução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceIntrodução ao AWS Database Migration Service
Introdução ao AWS Database Migration Service
 
Refactoring Databases
Refactoring DatabasesRefactoring Databases
Refactoring Databases
 
5 coisas que todo desenvolvedor deveria saber sobre sql server
5 coisas que todo desenvolvedor deveria saber sobre sql server5 coisas que todo desenvolvedor deveria saber sobre sql server
5 coisas que todo desenvolvedor deveria saber sobre sql server
 
Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010
 
MySQL 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?MySQL 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?
 
QAOps e a sua impotância para a qualidade de software
QAOps e a sua impotância para a qualidade de softwareQAOps e a sua impotância para a qualidade de software
QAOps e a sua impotância para a qualidade de software
 
TechEd_OFC305
TechEd_OFC305TechEd_OFC305
TechEd_OFC305
 
TechEd_OFC302
TechEd_OFC302TechEd_OFC302
TechEd_OFC302
 
Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009
 
Banco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e RefatoraçãoBanco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e Refatoração
 
Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)
 
Capitulo 02 sommerville
Capitulo 02 sommervilleCapitulo 02 sommerville
Capitulo 02 sommerville
 

SQL Saturday 329 - Novo Cardinality Estimator do SQL Server 2014

  • 1. Otimizando seus planos de execução com o SQL Server 2014 Cardinality Estimator Vitor Fava @sqlservermaniac| Vita Database Solutions vitor.fava@vitadatabasesolutions.com
  • 3. Me  Vitor Fava;  14 anos de experiência;  Princial Database Architect na Vita Database Solutions;  Pass Chapter Leader do SQLManiacs em SP;
  • 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. Como as pessoas veem o SQL Server
  • 6. Como o SQL Server realmente é
  • 7. Processamento de uma consulta  Parsing;  Binding;  Otimização;  Execução;
  • 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. 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. Modelo de pressuposição  Independência;  Uniformidade;  Contido;  Inclusão;
  • 11. Habilitar o novo CE  Compatibility Level;  Trace Flag 2312;
  • 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. 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
  • 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
  • 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
  • 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. 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;
  • 22. Links  http://vfava.wordpress.com  https://groups.google.com/d/forum/sqlmaniacs  http://facebook.com/devSQL  Devsql-subscribe@yahoogroups.com