Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SQL Server – Performance e Tunning

2,905 views

Published on

Por Pedro Martins

Nesta sessão iremos abordar como identificar bottlenecks, a analisar planos de execução e a performance do SQL Server 2012. Iremos também comparar os diferentes tipos de índice e como eles podem ajudar a melhorar o desempenho do servidor. Finalmente, iremos ver alguns truques em stored procedures.

Agenda:

Planos de execução
Índices
Otimização de Stored Procedures

Published in: Technology
  • Login to see the comments

SQL Server – Performance e Tunning

  1. 1. NOME DA APRESENTAÇÃONome (Nick no Fórum)25 DE MAIO @MICROSOFTSQL Server – Performance e TunningPedro Martins (Rechousa)
  2. 2. AgendaPrincipais problemasPlanos de ExecuçãoÍndicesOtimização de Stored Procedures# 2
  3. 3. Principaisproblemas# 361%Fonte:Fritchey, G. (2012). SQL Server 2012 Query Performance Tuning (3rd ed.). Apress.
  4. 4. Workflow paraotimizaçãoFonte:Fritchey, G. (2012). SQL Server 2012 Query Performance Tuning (3rd ed.). Apress.# 4
  5. 5. DEMONSTRAÇÃOPlanos de execução
  6. 6. PerformanceKillers# 6• Má indexação;• Estatísticas desatualizadas;• Queries não otimizadas;• Planos de execução não reutilizados ou não otimizados;• Demasiados locks e deadlocks;• Fraco design da BD;• Excessiva fragmentação;• Constante recompilação de queries;• Uso de cursores de forma imprópria;• Configuração errada do LOG;• Uso excessivo da tempdb;
  7. 7. Subsistemade Storage# 7• Planos de execução:• Estatísticas desatualizadas;• Alterações de código;• Indexing (table scans vs index seeks);• Índices repetidos / desnecessários;• CDC (Change Data Capture);• Snapshot isolation;• Reduzida RAM do servidor;
  8. 8. Tipos de Índices# 8• Clustered;• Nonclustered;• Unique• Columnstore *• Index with included columns• Index on computed columns *• Filtered• Spatial• XML• Full-text
  9. 9. Pagese Extents# 9Página = 8kExtent = 8 PáginasTipos de página:• Dados;• Índices;• BLOB’s;• etc;
  10. 10. Clusteredvs Nonclustered# 10Clustered:• Dados gravados ordenados;• Máximo de um por tabela;• Estrutura B-Tree;Nonclustered:• Índices criados externamente;• Máximo 999;• Lista ordenada com apontador;
  11. 11. DEMONSTRAÇÃOClustered e Nonclustered
  12. 12. Demasiadosíndices# 12• Consumo de espaço desnecessário;• Queries podem usar índices de forma menoseficiente;• Plano de execução menos eficiente;• Degradação da performance;• Confusão na manutenção da BD;
  13. 13. DEMONSTRAÇÃOOver indexing
  14. 14. Índicesduplicados# 14• Reduzem a performance de INSERT, UPDATE eDELETE• Sem vantagens para SELECT;• Consumo de espaço desnecessário;
  15. 15. DEMONSTRAÇÃODuplicate indexing
  16. 16. Otimizações# 16• Devem ser executadas num horário off peak;• Evitar DBCC SHRINKDB – aumentafragmentação;• Selecionar o fill-factor apropriado pode reduzir afragmentação;• Clustered indexes devem ser criados em colunascujos valores são únicos e incrementais, deforma a evitar a fragmentação;• Desativar Boost SQL Server priority;• Separar ficheiros de Dados e Logs em diferentespartições;
  17. 17. Otimizações: ClusteredIndexes# 17• Determinam a ordem física de como os dadossão gravados fisicamente;• Aumento de performance em colunas:• com muitos valores distintos;• que são acedidas frequentemente;• com pesquisas de intervalos de valores;• que retornam muitos dados;Nota:Primary keys criam automaticamente clusteredindexes;
  18. 18. DEMONSTRAÇÃOClustered
  19. 19. Otimizações: remover índicesduplicados# 19• Identificar os índices duplicados;• Removê-los!
  20. 20. DEMONSTRAÇÃOIdentificar e remover índices duplicados
  21. 21. Otimizações: desfragmentaríndices# 21• Fragmentação reduz a performance;• A desfragmentação de índices é uma essencialtarefa de manutenção;• Recomendado:• Reorganizar se fragmentação entre 10% e 30%• Reconstruir se fragmentação superior a 30%
  22. 22. DEMONSTRAÇÃOFragmentação de índices
  23. 23. Checklist# 23• Verificar índices excessivos;• Criar índices para queries mais críticas;• Verificar planos de manutenção:• Rebuild e Reorganize;• Update Statistics;• Retornar apenas as colunas necessárias;• Usar SET NOCOUNT ON;• Particionar tabelas com muitos dados;• Reduzir a utilização da TempDB;• Criar índices COLUMNSTORE para soluções dedata warehousing;
  24. 24. TableValue Parameters# 24• Permitem o envio de parâmetros que contêm umaestrutura “do tipo tabela”;• Requerem a criação de um User defined Table Type;• O parâmetro a receber tem de ser READONLY;
  25. 25. DEMONSTRAÇÃOTVP + MERGE
  26. 26. Dúvidas / Questões ?
  27. 27. Obrigado !Pedro Martinsrechousa@gmail.comhttp://www.linkedin.com/in/rechousa
  28. 28. Patrocinador GoldPatrocinadores Silver
  29. 29. Media Partners

×