Encontro SQL BH February 2016 Otimização de Consultas no SQL Server
Apoio
Global Portuguese Virtual PASS
Local Chapters
Upcoming SQL Saturdays Brazil Apr 9 Joinville #488 Jun 18 Rio de Janeiro #512 Visit www.sqlsaturday.com to register for an event near you!
DAYANA THALITA SANTOS VIANA dayana_viana@hotmail.com facebook.com/dayanathalita @dayanatsv www. dayanaviana.com.br 7
Agenda 1. Armazenamento de Dados 2. Índices 3. Álgebra Relacional 4. Leis Algébricas: Regras Gerais de Transformação & Estimativas de Custo 5. Extended Events 6. SET Session Options 7. Plano de Execução e Estatísticas 8. Dynamic Management Objects 8
9 Armazenamento de Dados
Tipo de Dados Numeric Decimal Int Smallint DateTime Date Time Smalldatetime Char Varchar Nvarchar Binary Image Timestamp Xml 1 0
Índices Muda a estrutura de uma página de dados HEAP. Assim como nas tabelas, páginas de índices também ocupam espaço físico. Esparço X Denso Cluster X Não-Cluster select * from sysindex idx idx.index_id = 0 -> sem índice cluster (HEAP) Idx.index_id = 1 -> possui índice cluster 1 1
1 2 Índices
Índices B-Tree SysIndexes.Root 1 3
Índices CREATE Opções Unique Fill Factor Pad Index Clustered Nonclustered Do not automatically recompute statistics DBCC SHOWCONTIG (Orders) AVG Page Density (full) =? 1 4
Índices CREATE 1 5
Índices sp_helpindex Dicas Quanto mais compacto o tamanho da chave de índice, melhor! Procure sempre criar um índice cluster em suas tabelas. OLTP: Grande volume de acessos pontuais Criar PK s clusterizadas e curtas Bases de Consulta Reserver o índice cluster para que são acessadas por range Ex.: Datas 1 6
Índices Perguntas! Um índice primário é esparço por definição. (S/N PQ) Bloco -> Uma entrada no índice Pesquisa binária no índice é mais rápida? (S/N PQ) Requer menos acesso de bloco do que uma pesquisa binária no arquivo inteiro 1 7
Fases de execução da Query SELECT * FROM 1 8
Álgebra Relacional Entender Álgebra e cálculo é uma chave para entender SQL e processamento de Consultas 1 9
Operação de Seleção ( ơ ) WHERE Álgebra Relacional Seleciona em sub-conjunto de fileiras da relação 2 0
Projeta as tuplas de uma relação sobre um determinado conjunto de atributos. Deleta colunas indesejadas da relação SELECT Álgebra Relacional Operação de Projeção ( π ) 2 1
Álgebra Relacional Operação Conjunto > Union ( Ս ) Efetua a união de duas relações compatíveis São compatíveis quando tiverem o mesmo grau (nº de colunas e seus respectivos tipos iguais) UNION Realiza um DISTINCT entre os SELECTs X UNION ALL Une os SELECTs. Dados podem repetir. 2 2
Álgebra Relacional Operação Conjunto > Union ( Ս ) 2 3
Álgebra Relacional Operação Conjunto > Interseção ( Ո ) e Diferença ( ) 2 4
Produto Cartesiano ( ) Álgebra Relacional Cada linha de S1 é combinada com cada linha de R1. Resultado <- S1 X R1 2 5
Álgebra Relacional Junções ( ) Simplifica a operação do Produto cartesiano seguido de Seleção. Operadores {=,<,,>,, } 2 6
Álgebra Relacional Junções ( ) > Eqüi-Junção Junção Natural Uma operação de junção que envolva apenas condições de igualdade é chamada de eqüi-junção. Junção Natual é uma eqüi-junção na qual o Segundo atributo é eliminado. Junção definida sobre atributos do mesmo nome. 2 7
Junções ( X ) -> Outer Join Álgebra Relacional Junções extenas permitem que tuplas que não tenham relacionamento na junção, também sejam selecionadas com valores nulos para seus atributos. Left Outer Join (Junção externa à esquerda _ X ) Right Outer Join (Junção externa à direita X _ ) Full Outer Join (Junção externa total _ X _ ) 2 8
Álgebra Relacional Junções ( X ) 2 9
Fases de execução da Query SELECT * FROM 3 0
Parsing Para cada projeto localizado em Stafford, retorne o número do projeto, o número do departamento que o controla e o último nome, endereço e data de aniversário do seu gerente. SELECT P.NUMBER, P.DNUM, E.LNAME, E.ADDRESS, E.BDATE FROM PROJECT AS P, DEPARTMENT AS D, EMPLOYEE AS E WHERE P.DNUM=D.DNUMBER AND D.MGRSSN=E.SSN AND P.PLOCATION= STAFFORD ; 3 1
Parsing SELECT P.NUMBER, P.DNUM, E.LNAME, E.ADDRESS, E.BDATE FROM PROJECT AS P, DEPARTMENT AS D, EMPLOYEE AS E WHERE P.DNUM=D.DNUMBER AND D.MGRSSN=E.SSN AND P.PLOCATION= STAFFORD ; 3 2
3 3 Binding
Fases de execução da Query SELECT * FROM 3 4
Otimização Parse Tree -> Plano de consulta lógico + leis algébricas = Plano de consulta lógico melhorado -> Plano Físico Com heurísticas Com estimativas de custo (seletividade) 3 5
Otimização Com Heurísticas Aplica-se regras heurísticas para otimizar a representação interna. A heurística principal é aplicar primeiro as operações que reduzem o tamanho dos resultados intermediários. 3 6
Otimização Com Heurísticas LEIS ALGÉBRICAS: melhor o plano lógico As mais comuns utilizada por otimizadores: SELECAO o mais cedo possível (mais baixo na árvore) PROJECAO o mais cedo possível. Novas podem ser adicionadas. ELIMINAR DUPLICATAS: remover ou mover para outra posição na árvore. SELECAO + PROD.CARTESIANO = EQUIJOIN Algumas vezes será mais eficiente 3 7
Otimização Com Heurísticas 3 8
Otimização Com Heurísticas 3 9
Otimização Com Heurísticas 4 0
Otimização Com Heurísticas Regras gerais de transformação para Operações de Álgebra Relacional: 1. Seleções conjuntivas podem ser quebradas em uma cascata de ơ σc1 c2 (E) = σc1 ( σc2 (E)) 2. Operações de seleção são comutativas σc1 ( σc2 (E)) = σc2 ( σc1 (E)) 3. Cascata de π : Em uma sequência de operações de projeção, todas, exceto a última, podem ser ignoradas πl1 ( πl2 (...( πln(e))...)) = πl1(e) 4 1
Otimização Com Heurísticas Regras gerais de transformação para Operações de Álgebra Relacional: 4. Comutatividade de ơ e π : Se a condição de seleção c envolver apenas aqueles atributos A1,..., An da lista de projeção, as duas operações podem ser comutadas πa1, A2,..., An (σc (R)) = σc (π A1, A2,..., An (R)) 5. Continua 4 2
Com Estimativas de Custo Otimização Exemplo de algoritmos usados na implementação dos operadores: Busca Linear (ou força bruta); Busca Binária; Utilização de índice Classificação (ORDER BY) : quicksort, sort-merge externo Merge-Join, Hash-Join Junção sort-merge, Junção de laços aninhados, junção hash 4 3
Com Estimativas de Custo O custo de uma consulta pode ser estimado de diversas formas: Por acesso a disco; Por tempo de CPU; Otimização Pelo tempo de comunicação nos BD paralelos/distribuídos. 4 4
Fases de execução da Query SELECT * FROM 4 5
Execução Problemas de Otimização de Queries: Podem ser executadas de muitas formas diferentes! Ordem das tabelas Diferentes algorittmos Operadores comutativos (Ex.: AND no WHERE) GROUP BY (ordenado ou hash group) SGBD executa a querie em segundos! 4 6
Execução SQL Server O otimizador de querie do SQL Server é baseado em custos Balanceamento entre qualidade e tempo Cálculo de custo: Algotitmos + Cardinalidade Armazenamento do Plano Queries parametrizadas 4 7
Execução Pergunta! Em qual fase da execução da querie o SQL Server verifica se os objetos referenciados realmente existem? A) Parsing B) Binding C) Otimização D) Execução 4 8
SQL Server Extended Events Execução Sistema de monitoramento de performance Impactos de monitoramento SQL Trace SQL Server Profiler 4 9
5 0
Execução SET Session Options Diminuir I/O de disco! Número de páginas por tabela acessadas pela querie. SET STATISTICS IO ON Tempo de CPU e tempo total. SET STATISTICS TIME ON 5 1
5 2
Execução Plano de Execução Passo final de uma consulta Um professional que não sabe realizer uma leitura de um plano de execução jamais deveria desenvolver uma consulta Thiago Cruz 5 3
Execução Plano de Execução Plano estimado SET SHOWPLAN_ALL ON SET SHOWPLAN_XML Ctrl-L Plano atual SET SHOWPLAN_TEXT SET STATISTICS XML Ctrl-M 5 4
5 5
Execução Operadores de Plano de Execução 5 6
Execução Operadores de Plano de Execução 5 7
Estatísticas de Banco de Dados Determinam o custo de um produto Guardam informações que podem diminuir o custo de uma consulta Apesar o plano armazenado, as estatísticas podem mudar! Ex.: Número de linhas aumentar. select * from sys.stats 5 8
Monitoramento constante do SQL Server Encontra problemas como falta de index dynamic management views & dynamic management functions Schema sys system.dm_% Status corrente X cumulativo Execução Dynamic Management Objects (DMO) Objetos Materizalizados X Virtual 5 9
Execução Dynamic Management Objects (DMO) Categorias para análise de peformance: SQL Server Operationg System (SQLOS): Recursos do sistema Operacional Execution-related: Queries executadas, seus textos, planos de execução, número de execuções etc.. Index-related: Informações sobre o uso de index e faltantes. 6 0
6 1
Referências Training Kit (Exam 70-461) Quering Microsoft SQL Server2012: Book, Databases & Examples Banco de Dados Avançados DCC UFMG Slides Prof. Mirella M. Moro Sistemas de Banco de Dados, 6a Ed. - Elmasri, R.; Navathe, S. B. SQL Join: Entenda como funciona o retorno dos dados DevMedia - Fernanda Salai O Passo a passo para trabalharmos com Peformance Thiago Cruz @YOUTUBE 6 2
Volunteering Opportunities PASS would not exist without its global network of passionate, dedicated, and hardworking volunteers. Volunteer today! For local opportunities, please visit: volunteer.sqlpass.org For PASS HQ related activities, please update the MyVolunteering section of your MyPASS profile. 6 3
Stay Involved! Sign up for a free membership today at sqlpass.org. Linked In: http://www.sqlpass.org/linkedin Facebook: http://www.sqlpass.org/facebook Twitter: @SQLPASS PASS: http://www.sqlpass.org