SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados I 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone: 9531-7555.

Slides:



Advertisements
Apresentações semelhantes
O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Advertisements

Banco de Dados Prof. Antonio.
Triggers Renata Viegas.
SQL Avançado Continuação
SQL Structured Query Language (continuação)
Banco de Dados SQL TRIGGERS (Gatilhos)
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados II 1º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone: 9531 – 7555.
Sistemas de Informação Redes de Computadores
Visões Marilde Santos.
Maurício Edgar Stivanello
SQL – DML Consultas envolvendo relacionamentos entre tabelas
Operadores Especiais da SQL
Introdução à Engenharia da Computação
Oficina sobre banco de dados
SCC Bancos de Dados e Suas Aplicações
SCC Bancos de Dados e Suas Aplicações
Material III-Bimestre Wagner Santos C. de Jesus
Operação de União “JOIN”
12 Horas Instrutor: Antonio Itamar Júnior
Banco de dados Profª Kelly Medeiros.
PostgreSQL.
Equipe de monitoria Aula prática 2. Apresentação do caso de estudo Conceitual Lógico Algumas informações iniciais Consultas e exercícios Surpresa... =)
Query Tuning Lílian Simão Oliveira.
Comandos de SQL Excel VBA II.
Monitoria GDI Aula Prática
Monitoria GDI Aula Prática
Banco de Dados II Prof. Antônio Cordeiro.
SQL Álvaro Vinícius de Souza Coêlho
BANCO DE DADOS UNIVERSIDADE ESTADUAL DE SANTA CRUZ
Design Patterns / Acesso ao banco de dados (java.sql)
(Linguagem de Consulta Estruturada)
III – Oracle10g Funções que Manipulam Apontadores.
Carlos Vinícius Rasch Alves MARCA SISTEMAS
Desenvolvendo um script SQL
Treinamento sobre SQL.
VIEW - VISÕES Professor Esp. Diego André Sant’Ana
Criação de Tabelas. CREATE TABLE nome_da_tabela ( >>. >> ) Ex.: SQL SERVER 2008 CREATE TABLE pessoa ( CPF VARCHAR(11) NOT NULL, NOME VARCHAR(100) NOT.
Baseado no material do Professor Raul Paradeda
Microsoft SQL Server 2008 SPARSE. Para que serve? –Otimiza o espaço de armazenamento de colunas com valores NULL.
Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados.
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
SEGUNDA FASE / S2B MIC PERNAMBUCO
SQL- Structured Query Language  SQL é uma linguagem de comandos para interagir com uma BD relacional (não é case-sensitive).  A linguagem Java permite.
Treinamento SQL Server
Fundamentos de Banco de Dados Fundamentos de Banco de Dados Prof. Gale 2º. Semestre 2008.
Comandos Alias, Joins, Funções e Índice Professor Esp. Diego André Sant’Ana Disciplina: Banco de Dados II professordiegosantana.wordpress.com.
Fundamentos de Banco de Dados Fundamentos de Banco de Dados Prof. Gale 2º. Semestre 2008.
DELETE, UPDATE, COMMIT, ROLLBACK
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
Subconsulta na Cláusula FROM
Daniel Paulo Atualizando e excluindo Dados Comando UPDATE – Altera registros da tabela UPDATE tabela SET nome_coluna = expressao.
Daniel Paulo Constantes ou Literais Caracteres – deve ser utilizado aspas simples ‘Marco Antonio da Silva’ Para utilizar o caractere.
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
Daniel Paulo SQL Módulo I Daniel Paulo
VBA – Visual Basic para Aplicativos
UCSal – Bacharelado em Informática
Linguagem de definição de dados - SQL
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
2/6/2016 José Antônio da Cunha - CEFET - RN1 Programação de Banco de Dados Funções.
José Antônio da Cunha 2/6/2016 José Antônio - CEFET-RN 1 Disciplina: Banco de Dados.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
José Antônio da Cunha 3/6/2016 José Antônio - CEFET-RN 1 Copyright © Dale Carnegie & Associates, Inc.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 5 Mais SQL: Consultas Complexas, Triggers e Views.
Transcrição da apresentação:

SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados I 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone: Versão – Out/2010.

QUERY PROCESSOR (PROCESSADOR DE QUERY)

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.

QUERY OPTIMIZER

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.

Fluxograma – Plano de Execução

PREPARANDO O AMBIENTE

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))

Preparando o Ambiente Inserindo dados na Tabela Funcinarios: Insert Into Funcionarios(Nome, Salario, Telefone, Cidade) Values (José, , , São Paulo) Insert Into Funcionarios(Nome, Salario, Telefone, Cidade) Values (Antonio, 950, , São Paulo) Insert Into Funcionarios(Nome, Salario, Telefone, Cidade) Values (João, 1200, , São Paulo)

Preparando o Ambiente Criando a Visão para consulta de dados: Create View vw_Funcionarios As Select Nome, Salario From Funcionarios Where Salario > 900

Entendendo o Plano de Execução (Execution Plan)

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….

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.

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.

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

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

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.

Trabalhando com o Plano de Execução (Execution Plan)

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.

Visualizando o Plano de Execução Modo Gráfico, Modo Texto e XML.

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.