José Antônio da Cunha IFRN Administração de Banco de Dados.

Slides:



Advertisements
Apresentações semelhantes
Tópicos em Banco de Dados
Advertisements

O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Otimização de Consultas em SQL Estimativas de Custos
Banco de Dados Prof. Antonio.
Banco de Dados I Aula 20.
SQL Avançado Continuação
Prof.: Bruno Rafael de Oliveira Rodrigues
Banco de Dados SQL TRIGGERS (Gatilhos)
Banco de Dados SQL Stored Procedures
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados I 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Visões Marilde Santos.
Maurício Edgar Stivanello
SGBD.
Algoritmos para Operações de Conjuntos AULA 19 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Projeção e Operações de Conjuntos AULA 22 Profa. Sandra de Amo GBC053 – BCC
SQL – Noções Gerais Por Márcia Jacyntha N. Rodrigues Lucena
Operadores Especiais da SQL
Introdução à Engenharia da Computação
Operação de União “JOIN”
Banco de dados Profª Kelly Medeiros.
Query Tuning Lílian Simão Oliveira.
Banco de Dados Avançado - Prof.ª Valeria Times
Geração de Planos de Execução Planos para Consultas Aninhadas
Banco de Dados II Prof. Antônio Cordeiro.
Bancos de Dados SQL Server 2012 SQL DML - Data Manipulation Language)
Otimizador de consultas
Tuning Lílian Simão Oliveira.
ACCESS 2007 EDIMILSON JÚNIOR.
Banco de Dados PostgreSQL.
sintonia de banco de dados
III – Oracle10g Apontadores – Tipo de Dado (REF).
Desenvolvendo um script SQL
VIEW - VISÕES Professor Esp. Diego André Sant’Ana
Banco de dados.
Algoritmos para Operações Binárias entre blocos SQL AULA 19 – Parte I Profa. Sandra de Amo GBC053 – BCC.
Treinamento SQL Server
Ricardo Ferreira Schiavo
Estatísticas SQL Server 2012/2014 September 2014.
SQL Server Comando PIVOT.
Curso de Análise e Desenvolvimento de Sistemas Projeto de Banco de Dados Marcelo da Silveira Siedler.
III – Oracle 9i Indexação. Índices Baseados em Funções É um índice baseado no valor de retorno de uma expressão ou função –A função pode ser um método.
Banco de Dados I I Comandos SQL
Linguagem SQL Prof. Juliano.
III - Oracle9i Apontadores – Tipo de Dado (REF). Identificador de Objeto A todo objeto de uma “object table” é associado um OID (“Object IDentifier”)
AOBD 07/08 Mini-Projecto 2 Soluções. 1) Considere que existem três relações R1=(A,B,C), R2=(C,D) e R3=(D,E) com chaves primárias A, C e D, respectivamente.
Sumário 1 SQL Embutida 2 Processamento de Consultas
Banco de Dados I Unidade 6 Processamento de Consultas Otimização Lógica.
PostgreSQL Índices Nuno Campos N.º Nuno Campos - N.º Índice Introdução Tipos de Índices – B-Tree – R-Tree – Hash – GiST Classes de Operadores.
Daniel Paulo Atualizando e excluindo Dados Comando UPDATE – Altera registros da tabela UPDATE tabela SET nome_coluna = expressao.
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
Daniel Paulo Introdução Informações de uma tabela ou view podem ser encontradas de maneira mais rápida através da utilização.
Daniel Paulo SQL Módulo I Daniel Paulo
Informática Básica Jackson Eduardo da Silva Fórmulas É comum ouvirmos falar nas fórmulas do Excel. São ferramentas poderosas que podem ser usadas para.
VBA – Visual Basic para Aplicativos
Fórmula Visual RM.
Linguagem de definição de dados - SQL
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
José Antônio da cunha IFRN Administração de Banco de Dados.
Administração de banco de dados José Antônio da Cunha IFRN.
Administração de Banco de dados José Antônio da Cunha CEFET-RN.
1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.
Administração de banco de Dados SQL Server José Antônio da Cunha.
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.
Normalização (4FN) Na literatura aparecem outras formas normais, como a forma normal de Boyce/Codd, a 4FN e a 5FN. Destas a única que tem importância na.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Kelyn Schenatto. Definição Linguagem de Consulta Estruturada (Structured Query Language); Desenvolvida inicialmente nos anos 70 nos laboratórios da IBM.
Índices - Full Text Searching IFRN José Antonio da Cunha.
José Antônio da Cunha 3/6/2016 José Antônio - CEFET-RN 1 Copyright © Dale Carnegie & Associates, Inc.
Transcrição da apresentação:

José Antônio da Cunha IFRN Administração de Banco de Dados

Estudo de caso Imagine a seguinte situação: você acabou de concluir um relatório que demonstra a produtividade dos vendedores na tiragem de pedidos da empresa Northwind. Esse relatório sumariza os pedidos existentes na tabela Orders para um determinado vendedor. Após conclusão do relatório, você verifica no plano de execução que o índice existente EmployeeID não está sendo utilizado na seleção de pedidos de um vendedor e você decide investigar o porquê. O select executado na Figura 1 a seguir comprova que o índice Employeeid não está sendo selecionado, pois foi utilizado um clustered index scan em PK_Orders. Análise de desempenho do índice

Estudo de caso

Análise de desempenho do índice Você decide então analisar as estatísticas do índice pelo comando DBCC SHOW_STATISTICS, para verificar o histograma relacionado à coluna EmployeeID. Execute o comando: dbcc show_statistics (orders, employeeID) O resultado é apresentado na figura a seguir

Análise de desempenho do índice Resultado

Análise de desempenho do índice Com base nas estatísticas, constatamos que: A medida de seletividade da coluna Employeeid na tabela Orders nos informa que, dos 830 pedidos existentes, 43 (5% do total) foram realizados para o vendedor de código 9; A densidade para Employeeid informa que cada empregado possui média de 92 pedidos na tabela Orders (830* ).

Análise de desempenho do índice Por fim, deduz-se que: o índice não foi utilizado devido à baixa seletividade da coluna Employeeid. O custo da pesquisa com utilização do índice é maior que o processo de clustered index scan realizado na tabela. Podemos comprovar executado os comandos a seguir. Observe que ao forçar a escolha do índice o número de logical reads pulou de 27 para 91!

Análise de desempenho do índice Executando: set statistics io on select * from Orders where EmployeeID = 9 Obtem-se como resultado: (43 row(s) affected) Table 'Orders'. Scan count 1, logical reads 27, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Executando: set statistics io on select * from Orders with (index=EmployeeID) where EmployeeID = 9 Obtem-se como resultado: (43 row(s) affected) Table 'Orders'. Scan count 1, logical reads 91, physical reads 0, read- ahead reads 0, lob logical reads 0, lob physical reads 0, lob read- ahead reads 0.

Análise de desempenho do índice Considerando que não precisamos de toda informação contida no pedido, mas somente do número efetivo de pedidos para esse vendedor. Queremos saber quantos pedidos foram emitidos para o vendedor de código 9. Substituímos então o comando select * from Orders Where employeeid=9 pelo comando select count(*) from Orders where employeeid=9 e analisemos o plano de execução na figura a seguir:

Análise de desempenho do índice

Confirme a mudança no plano de execução, onde o Clustered Index Scan em PK_Orders foi substituído pelo Index Seek em Orders. EmployeeID. O comando count(*) com o filtro para employeeid=9 viabiliza a query com cobertura do índice EmployeeOrders.

CheckSum na otimização de índices A função CheckSum pode ser utilizada para criar chave hash em oposição a índices criados sob colunas char ou varchar. A vantagem de trabalhar com índice hash é a redução no tamanho da chave do índice. Diminuindo o tamanho da chave estaremos aumentando a densidade de linhas por página de índice, induzindo melhorias de desempenho. Nota: índices hash não podem ser utilizados em comparações envolvendo os operadores >, >=,.esse tipo de índice se presta somente para pesquisas igualitárias. Uma chave hash é utilizada como uma boa opção de desempenho na construção de um índice, sendo utilizado na substituição de longas chaves alfanuméricas por um único inteiro, gerado à partir de funções matemática.

CheckSum na otimização de índices A implementação dessa idéia envolve os seguintes passos: Devemos criar uma coluna calculada, utilizando a função CheckSum para geração automática do código hash. alter table customers add cs_CompanyName as Checksum(CompanyName) Devemos então criar um índice sobre essa coluna. create index ix_cs_CompanyName on Customers (cs_CompanyName) Podemos então realizar consulta sobre a coluna com o código hash da seguinte forma: select * from Customers where cs_CompanyName = Checksum('The Cracker Box') and CompanyName = 'The Cracker Box'

CheckSum na otimização de índices Observando as estatísticas do índice CompanyName dbcc showcontig(Customers,CompanyName)

CheckSum na otimização de índices Observando as estatísticas do índice CompanyName dbcc showcontig(Customers,ix_cs_CompanyName)

CheckSum na otimização de índices No comando select apresentado anteriormente, existe uma redundância na comparação com o nome do cliente, que é referenciado na linha da função CheckSum: “...Where cs_CompanyName=checksum(’The Cracker Box’)” “...AND CompanyName=‘The Cracker Box’...”. Esse procedimento é necessário já que existe a possibilidade dessa função gerar o mesmo código hash para inputs distintos, conforme indicação da própria Microsoft. Para evitar resultados indesejados, trabalha-se com a segunda confirmação. Índices hash não deve ser utilizado em comparações do tipo...where CompanyName like (‘The Craker%’).