estatísticas sql server 2012/2014

15
September 2014

Upload: julian-kline

Post on 04-Jan-2016

43 views

Category:

Documents


1 download

DESCRIPTION

Estatísticas SQL Server 2012/2014. September 2014. Upcoming SQLSaturdays. Sep 27 #325Sao Paulo. http:// www.sqlsaturday.com/325/eventhome.aspx. Tuning do Ínicio ao Fim Thiago Carlos de Alencar 09:30 AM. Visit www.sqlsaturday.com to register for an event near you!. Quem Sou Eu ?. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Estatísticas SQL Server 2012/2014

Estatísticas SQL Server 2012/2014

September 2014

Page 2: Estatísticas SQL Server 2012/2014

Upcoming SQLSaturdays

• Sep 27 #325 Sao Paulo

Visit www.sqlsaturday.com to register for an event near you!

http://www.sqlsaturday.com/325/eventhome.aspx

Tuning do Ínicio ao FimThiago Carlos de Alencar09:30 AM

Page 3: Estatísticas SQL Server 2012/2014

Quem Sou Eu?

Thiago Carlos [TC] de Alencar• Premier Field Engineer• Blog: www.tcalencar.wordpress.com• E-mail: [email protected]• Certificações: MCITP e MCT

Page 4: Estatísticas SQL Server 2012/2014

Agenda

Estatísticas do SQL Servero Introdução a Estatísticaso Criando / Atualizando Estatísticaso Visualizando as Estatísticaso Lendo um Histogramao Estatísticas FiltradasNo SQL 2014?o Novo Algoritmo de Cardinalidadeo Melhorias em: ASC/ DESC Estimate - Join Estimates -

Multiple Column DependencyDemo

Page 5: Estatísticas SQL Server 2012/2014

Introdução a Estatísticas• O SQL Server Precisa de estatísticas para tentar criar bons

planos de execução.

• Estatísticas mantem informações sobre a distribuição dos dados

• A geração de estatísticas no SQL Server automática é apenas para uma coluna.

• Histograma pode ter até 200 “passos”

• É “saudável” manter muitas estatísticas? • DEPENDE

Page 6: Estatísticas SQL Server 2012/2014

Criando / Atualizando Estatísticas• O SQL Server Cria / Atualiza automaticamente as estatísticas

no SQL Server

• Estatísticas criadas automaticamente começam com _WA…..

• Propriedade do Banco de dados

• CREATE STATISTICS statistics_name ON { table_or_indexed_view_name }

• UPDATE STATISTICS table_or_indexed_view_name [ { { index_or_statistics__name }

Page 7: Estatísticas SQL Server 2012/2014

Visualizando estatísticas

• DBCC SHOW_STATISTICS ( table_or_indexed_view_name , target ) [ WITH [ NO_INFOMSGS ] < option > [ , n ] ] < option > :: =     STAT_HEADER | DENSITY_VECTOR | HISTOGRAM | STATS_STREAM

• sys.stats

• sys.stats_columns

• STATS_DATE(ObjectId, Stats_id)

• sys.dm_db_stats_properties (Object_id, Stats_Id)• Nova no SQL Server 2014• Aplica-se a SQL Server 2008 R2 SP2 e SQL Server

2012

Page 8: Estatísticas SQL Server 2012/2014

Lendo o Histograma

DBCC SHOW_STATISTICS(“Production.TransactionHistory”, TransactionDate)

RANGE_HI_KEY - Valor chave de cada amostra.

SELECT * FROM Production.TransactionHistory WHERE TransactionDate = '20070906'

RANGE_ROWS – Qtde de Linhas dos valores dentro do RANGE.Ex: O range da amostra da linha 4 vai de 2007-09-05 até 2007-09-06 (exclui o RANGE_HI_KEY)

EQ_ROWS – Qtde de Linhas exatas para os valores de RANGE_HI_KEY.Ex: Para o valor de 2007-09-03 existem 203.DISTINCT_RANGE_ROWS – Qtde de valores distintos que existe para o RANGE_ROWS.Ex: Quantos valores distintos existe entre o valor de 2007-09-05 até 2007-09-06 (exclui o RANGE_HI_KEY)

AVG_RANGE_ROWS – Quantidade média de registros no RANGEEx: RANGE_ROWS / DISTINCT_RANGE_ROWS

Page 9: Estatísticas SQL Server 2012/2014

Estatísticas Filtradas

• Melhor desempenho de consultas e qualidade de plano

• Redução de custos de manutenção de estatísticas• Por ser um conjunto menor de dados

• Adiciona a cláusula WHERE

• CREATE STATISTICS NomeEstatistica ON Tabela (Coluna(n)) WHERE Predicado IS NOT NULL

Page 10: Estatísticas SQL Server 2012/2014

Novo no SQL 2014

Page 11: Estatísticas SQL Server 2012/2014

Novo algoritmo de cardinalidade• Novo “Cardinality Estimator” - CE• É um sub-componente do “Query Processor”• O nível de compatibilidade deve estar em 120 (SQL 2014)

• Não tem mudado desde o SQL Server 7.0 – 15 Anos• Tem recebido melhorias através de Services Pack,

Hotfixes, traceflags e etc.• Alterar a estrutura da arquitetura atual tornou-se difícil

• Melhora a maioria dos “Workloads”• Maioria não inclui “TODAS”• Teste é VITAL

• Regressão de Planos• TF 2312 ou Nível de compatibilidade do SQL Server 2012

(110)

Page 12: Estatísticas SQL Server 2012/2014

Melhorias em:

• ASC / DESC Estimativas de Valores Chaves• Mudança no comportamento de “Ascending Columns”

• Múltiplas colunas – AND e OR• Old: (S¹ * S²) * Cardinalidade / (S¹ + S²) - (S¹ * S²) *

Cardinalidade• Novo: C * (S¹ * SQRT(S²) * SQRT(SQRT(S³)) ….)• O cálculo é feito apenas nas “quatro” primeiras

seletividades

• Dependência de Múltiplas Colunas*.• Independência de colunas em versões anteriores

Page 13: Estatísticas SQL Server 2012/2014

Referências:http://msdn.microsoft.com/pt-br/library/ms190397.aspx

http://msdn.microsoft.com/pt-br/library/ms188038.aspx

http://msdn.microsoft.com/pt-br/library/ms187348.aspx

http://msdn.microsoft.com/pt-br/library/ms174384.aspx

http://technet.microsoft.com/pt-br/library/cc280372(v=sql.110).aspx

http://msdn.microsoft.com/en-us/library/dn673537.aspx

http://blogs.msdn.com/b/ianjo/archive/2006/04/24/582227.aspx

http://www.benjaminnevarez.com/2013/02/statistics-on-ascending-keys/

https://www.simple-talk.com/sql/database-administration/statistics-on-ascending-columns/

Page 14: Estatísticas SQL Server 2012/2014

DEMO

Page 15: Estatísticas SQL Server 2012/2014

Stay Involved!• Sign up for a free membership today at sqlpass.org

• Linked In: br.linkedin.com/in/alencardba• Facebook: Thiago Carlos de Alencar• Twitter: @alencardba• PASS: http://www.sqlpass.org