Encontro SQL BH. February Otimização de Consultas no SQL Server

Documentos relacionados
MATA60 BANCO DE DADOS Aula: Otimização. Prof. Daniela Barreiro Claro

Processamento e Otimização de Consultas. Msc. Simone Dominico Orientador: Dr. Eduardo Cunha de Almeida PPGINF - UFPR

Introdução a. π LNAME, FNAME (σ SALARY>C (EMPLOYEE))

Processamento e Otimização de Consultas

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Tecnologias de Bancos de Dados

Administração de. José Antônio da Cunha CEFET-RN

ACH2025. Laboratório de Bases de Dados Aula 15. Processamento de Consultas Parte 2 Otimização. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

IEC Banco de Dados I Aula 06 Álgebra Relacional

Processamento de Consultas. Processamento de Consultas. Processamento de Consultas Distribuídas. Otimização de Consultas

Bancos de Dados. 15. Processamento e O3mização de Consultas

Rápida revisão do Modelo Relacional

Compilação, Otimização e Execução de Consultas. Profa. Dra. Cristina Dutra de Aguiar Ciferri

UTFPR - Universidade Tecnológica Federal do Paraná. Processamento e otimização de consultas

Otimização e Execução de Consultas Caso Centralizado Parse Query

Reindexação Automática em SGBDs Relacionais

Organização de Arquivos

OTIMIZAÇÃO DE CONSULTAS RELACIONAIS TRABALHO DE PÓS-GRADUAÇÃO

Banco de Dados. Otimização de consultas. Prof. Joao Eduardo Ferreira Prof. Osvaldo Kotaro Takai. Última atualização: 15 de maio de 2006

L Q S m e g a u g n Li A

Sumário. Etapas do Processamento de Consultas

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

ÁLGEBRA E CÁLCULO RELACIONAL

3 Plano de Execução de Consultas

Unipar Universidade Paranaense Disciplina: Banco de Dados II 3ª Série Profª: Késsia Marchi Profa. Késsia Marchi

Sumário. Definição do Plano de Execução

Processamento de Consultas. Simone Dominico Orientador: Dr. Eduardo Cunha de Almeida PPGINF - UFPR

Otimização de Consultas Baseada em Custo. Cristina Dutra de Aguiar Ciferri

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

Bancos de Dados IV. Tuning de Bancos de Dados. Rogério Costa

Linguagem SQL. ENG1518 Sistemas de Informação Gerenciais Prof. Marcos Villas

BANCO DE DADOS II SQL Básico. COTEMIG Gerson Borges

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Introdução ao Banco de Dados. Banco de Dados

Escrita ( W ) do Resultado

Introdução ao PostgreSQL

SQL. Prof. Roger Cristhian Gomes

Page 1. Prof. Constantino Jacob

Operações da Álgebra Relacional Operadores Especiais da Álgebra Relacional Renomeação

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

Processamento da Consulta. Processamento da Consulta

Banco de Dados I. Prof. Diego Buchinger. Profa. Rebeca Schroeder Freitas Prof. Fabiano Baldo.

ANÁLISE E PROJETO DE BANCO DE DADOS

- SQL Linguagem de Manipulação de Dados

BCD29008 Banco de dados

Álgebra Relacional. Programa. Modelos de Dados. LCs relacionais formais. Introdução

Bases de Dados. Álgebra Relacional II Junções, agregações, vistas. P. Serendero,

GES013 - Sistema de Banco de Dados SQL/DML no PostgreSQL Parte 1 Introdução e Consultas Basicas

DCC011 Introdução a Banco de Dados SQL gerenciar tabelas e dados

Sistemas de Bases de Dados Relacionais Introdução ao SQL. Interrogações diversas sobre a Base de Dados Northwind - Parte II

Álgebra Relacional e SQL

MySql. Introdução a MySQL. Andréa Garcia Trindade

Formação de DBAs SQL Server 2008 Parte 6: Gerenciamento de Performance

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe

Curso de Banco de Dados. Prof. Rone Ilídio

GBC053 Gerenciamento de Banco de Dados. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM/BCC

ANÁLISE E PROJETO DE BANCO DE DADOS

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Processamento de Produtos ( X )

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

SQL - Perguntas. André Restivo. Faculdade de Engenharia da Universidade do Porto. February 24, 2012

Banco de Dados I Módulo III: Linguagens de Consulta. (Aula 1) Clodis Boscarioli

Uso de Índices na Otimização e Processamento de Consultas. Otimização e Processamento de Consultas. Otimização e Processamento de Consultas

Banco de Dados I 3 Modelagem de Dados Lógico e Físico

Aula 11 SBD SQL Parte 3. Profa. Elaine Faria UFU

Revisão Banco de Dados

INDEX. Serve para organizar os dados e agilizar a pesquisa/consulta dos dados armazenado nas tabelas.

23/05/12. Agenda. Introdução. Introdução. Introdução. Álgebra. Relacional. Cálculo. Relacional

Administração e Optimização de BDs

Conceitos SQL SQL 19/03/2017 O que é dado? O que é BD? O que é uma informação? O que é SGBD? O que é SQL? O que é BD? O que é SGBD?

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

Roteiro. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Banco de Dados. SQL Structured Query Language

Modelagem Física e SQL

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

Banco de Dados I Introdução SQL

Sumário SELECT + FROM

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

4. Projecto de Bases de Dados

Modelo de Dados Relacional

Banco de Dados. Diego Silveira Costa Nascimento. 20 de março de Instituto Federal do Rio Grande do Norte

Modelo Relacional - Manipulação

Álgebra Relacional e Cálculo Relacional

Unidade 5 05/11/2008. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Redes de Computadores

Etapa III - Implementação de Operadores da Álgebra Relacional; Etapa IV - Comparação experimental de varredura sequencial x acesso aleatório

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 17. Escola Politécnica da Universidade de São Paulo

Marcelo Henrique dos Santos

SUBCONSULTAS E TIPOS DE JUNÇÃO. Banco de Dados Profa. Ana Paula Wauke

Introdução a Bancos de Dados

Tornou-se um padrão de fato para aplicações comerciais, devido a sua simplicidade e performance.

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Bases de Dados. Optimização de planos de execução. Plano de execução

SQL (Tópicos) Structured Query Language

Transcrição:

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