Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouManoela Trigo Alterado mais de 10 anos atrás
2
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados I 2º Semestre – 2010 Pedro Antonio Galvão Junior E-mail: pedrogalvaojunior@gmail.com Fone: 9531-7555 pedrogalvaojunior@gmail.com pedro.junior@aes.edu.br Versão 1.10.10 – Out/2010.
3
QUERY PROCESSOR (PROCESSADOR DE QUERY)
4
INTRODUÇÃO Escolher o melhor caminho para chegar a determinado lugar pode ser considerado para muitos uma arte, isso porque sempre existem vários caminhos que levam ao mesmo destino. Executar uma tarefa da forma mais eficiente possível requer que o caminho percorrido seja o melhor dentre as centenas de variáveis que podem influenciar na escolha do melhor percurso. No SQL Server o responsável por calcular a maneira mais eficiente de acesso aos dados é chamado de Query Processor, ele é dividido em duas partes, o Query Optimizer e o Query Execution Engine. Entender como funciona e como interpretar o trabalho do Query Optimizer é uma das melhores maneiras de aprominorar seus conhecimentos no SQL Server.
5
QUERY OPTIMIZER
6
INTRODUÇÃO Quando um comando T-SQL é executado no SQL Server, o Query Processor(Processador de Querys) entra em ação para gerar um Plano de Execução(Execution Plan). Este plano dirá qual é a melhor maneira de acessar os dados gastando menos recursos e com o desempenho mais eficiente. Podemos observar na a seguir a ação do Query Optimizer (em vermelho) e uma série de passos para compilar e executar um comando T-SQL.
7
Fluxograma – Plano de Execução
8
PREPARANDO O AMBIENTE
9
Preparando o Ambiente Para melhor entendimento dos exemplos, criaremos uma tabela, com alguns dados e uma visão, que servirão como base para os testes apresentados posteriormente. Criando a tabela Funcinarios: Create Table Funcionarios (ID Int Identity(1,1) Primary Key, Nome Varchar(30), Salario Numeric(18,2), Telefone VarChar(15), Cidade Varchar(80))
10
Preparando o Ambiente Inserindo dados na Tabela Funcinarios: Insert Into Funcionarios(Nome, Salario, Telefone, Cidade) Values (José, 850.30, 11-55960015, São Paulo) Insert Into Funcionarios(Nome, Salario, Telefone, Cidade) Values (Antonio, 950, 11-81115544, São Paulo) Insert Into Funcionarios(Nome, Salario, Telefone, Cidade) Values (João, 1200, 11-44123321, São Paulo)
11
Preparando o Ambiente Criando a Visão para consulta de dados: Create View vw_Funcionarios As Select Nome, Salario From Funcionarios Where Salario > 900
12
Entendendo o Plano de Execução (Execution Plan)
13
Entendendo o Plano de Execução Supondo que um SELECT simples, por exemplo, SELECT * FROM Funcionarios, seja enviado ao servidor, a primeira tarefa que o Query Processor fará com o comando é verificarf se o mesmo está no Cache Plan(Cache do Plano de Execução). Caso ele não esteja em cache, o Query Processor enviará o comando para os processos de Parse e Bind. O Parse/Bind executa um processo conhecido como Algebrizer. Durante este processo o SQL tenta encontrar possíveis erros de escrita na sintaxe e lógica do comando. O Algebrizer também expande as definições de comando, isso significa que ele troca select * por Select col1, col2, col3….
14
Entendendo o Plano de Execução Quando estamos realizando um Select sobre uma View, o SQL acessa a tabela de origem para ler os dados que serão exibidos sobre as colunas e tabelas utilizadas pela View. Após estas análises o Parse/Bind retorna um binário chamado Query Processor Tree, que é uma representação lógica dos passos necessários para a execução do comando SQL. O Query Processor Tree é enviado para o próximo passo da execução da consulta, que é a análise do Query Optimizer. Alguns comandos como por exemplo, Create Table não necessitam ser analisados pelo Query Optimizer, pois possuem somente uma forma de execução.
15
Entendendo o Plano de Execução Quando o Query Optimizer recebe o Query Processor Tree, ele dará inicio a uma série de análise a fim de encontrar qual é a maneira mais eficiente de acessar os dados desejados. O Query Optimizer trabalha baseado no custo de cada operador de acesso a dados, ou seja, ele tenta encontrar a maneira que gastará menos recursos para retornar os dados. Durante esta fase de análise o Query Optimizer realiza algumas tarefas: –Identificação de todos os possíveis argumentos de pesquisa que podem ser especificados na cláusula Where; –Verificar se existem Joins entre tabelas que devem ser otimizadas.
16
Entendendo o Plano de Execução Na análise do Query Optimizer também existem um processo chamadoSimplification, que é executado logo no inicio da otimização. Uma das tarefas do Simplification é conhecida como Predicate PushDown, onde ele tenta reescrever sua consulta jogando argumentos de pesquisa para a cláusula Where. Query criada pelo Usuário: SELECT F.* FROM FUNCIONARIOS F INNER JOIN FUNCIONARIOS AS F2 ON F.ID = F2.ID AND F.NOME = 'ANTONIO' WHERE F.ID > 1
17
Entendendo o Plano de Execução Query modificada pelo Query Optimizer: SELECT F.* FROM FUNCIONARIOS F INNER JOIN FUNCIONARIOS AS F2 ON F.ID = F2.ID WHERE F.ID > 1 AND F.NOME = ANTONIO
18
Entendendo o Plano de Execução Com base nesta simples representação gráfica podemos visualizar como o Query Optimizer funciona. Como podemos observar, o resultado chamado pelo Query Optimizer após sua análise será definido como Query Plan, ou Plano de Execução de Consultas.
19
Trabalhando com o Plano de Execução (Execution Plan)
20
Ordem de Execução O Plano de Execução realiza a seguinte sequência de passos internos: –(1) Todas as tabelas no FROM são unidas montando um plano cartesiano; –(2) Os filtros baseados na cláusula ON são executados; –(3) Os tipos de JOINs (LEFT, INNER, RIGHT, etc) são avaliados, para verificar que linhas devem ou não permanecer; –(4) Os filtros da cláusula WHERE são aplicados; –(5) As colunas na cláusula GROUP BY são aplicadas montando os grupos; –(6) A cláusula WITH CUBE ou WITH ROLLUP é aplicada; –(7) A cláusula HAVING é aplicada fazendo os filtros nos grupos; –(8) A cláusula SELECT é montada; –(9) As repetições são filtradas pelo DISTINCT ; –(10) A ordenação é feita pelo ORDER BY; e –(11) Os N primeiros registros são retornados pelo TOP.
21
Visualizando o Plano de Execução Modo Gráfico, Modo Texto e XML.
22
Modos de Visualização Existem três maneiras de visualizar o plano de execução: –Modo gráfico; –Modo texto; e –Formato e estrutura XML. Comandos para visualizar o Plano de Execução: –SET SHOWPLAN_TEXT ON; –SET SHOWPLAN_ALL ON; –SET STATISTICS PROFILE ON; –SET SHOWPLAN_XML ON; –SET STATISTICS XML ON.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.