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.

Slides:



Advertisements
Apresentações semelhantes
Otimização de Consultas em SQL Estimativas de Custos
Advertisements

Complexidade de Algoritmos
Álgebra Relacional Marcelo Mendes Manaus
SQL Structured Query Language (continuação)
SQL Structured Query Language (continuação)
Prof.: Bruno Rafael de Oliveira Rodrigues
Data Warehouse Tuning O que é um Data Warehouse? Índices Bitmap
Linguagens relacionais
Trabalho de Desenvolvimento
Otimização de Consultas em SQL Parte II - Planos Alternativos -  Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de.
Otimização de Consultas em SQL Parte I - Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 19 Profa. Sandra de Amo Programa.
Algoritmos para Projeção eliminando Duplicatas
Algoritmos de Junção – BNL e IndexNL AULA 16 Profa. Sandra de Amo GBC053 – BCC
AULA 27 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Operação de Junção
Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção com Condições Gerais AULA 17 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção e Projeção
Algoritmos para Seleção Simples
Algoritmos para Operações de Conjuntos AULA 19 Profa. Sandra de Amo GBC053 – BCC
AULA 23 Profa. Sandra de Amo GBC053 – BCC
Algebra relacional nomeada e não-nomeada
Algoritmos para Projeção e Operações de Conjuntos AULA 22 Profa. Sandra de Amo GBC053 – BCC
Otimização de Consultas em SQL Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 24 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Operação de Junção AULA 17 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU Sistemas de Banco de Dados
Subconsultas ou Consultas Aninhadas
SQL – DML Consultas envolvendo relacionamentos entre tabelas
SCC Bancos de Dados e Suas Aplicações
3 - Equações Lineares de Segunda Ordem
Algoritmos para Operação de Junção Loops Aninhados
Query Tuning Lílian Simão Oliveira.
4/1/2017 Algoritmos para processamento e otimização de consultas (Otimização baseada em custos) Cristiano Galina Slides adaptados do livro Sistema de Banco.
Algoritmos Aleatórios Para Optimização de consultas Artigo apresentado por: Daniel Martins David Martins
Geração de Planos de Execução Planos para Consultas Aninhadas
Produto cartesiano Mais parâmetros dos dados Algoritmo
Trabalho de Desenvolvimento Processamento/Optimização de Querys.
Otimizador de consultas
Design Patterns / Acesso ao banco de dados (java.sql)
Otimização de Consultas em SQL Planos de Execução
sintonia de banco de dados
Algoritmos de Processamento e Otimização de Consultas
Desenvolvendo um script SQL
Algoritmos para Operação de Junção Loops Aninhados AULA 17 Profa. Sandra de Amo GBC053 – BCC.
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Query processing in main memory Vitor Silva. Bibliografia “Query Processing in Main Memory Database Management Systems” - Tobin J. Lehman & Michael J.
©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.
AULA 20 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Operações Binárias entre blocos SQL AULA 19 – Parte I Profa. Sandra de Amo GBC053 – BCC.
Treinamento SQL Server
BD I / Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.
AULA DE DÚVIDAS 9 de Abril de Especialização  Simplifica-se quando:  especialização é disjunta e  especialização é total e  não há relações.
©Silberschatz, Korth and Sudarshan (modificado)4.2.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
Algoritmos de Junção – IndexNL e Sort Merge Join AULA 19 Profa. Sandra de Amo GBC053 – BCC.
Algoritmos para o operador de Projeção AULA 19 – Parte II Profa. Sandra de Amo GBC053 – BCC.
©Silberschatz, Korth and Sudarshan (modificado)7.3.1Database System Concepts Capítulo 7: Design de Bases de Dados 1ª Forma Normal Objectivos com Design.
PostgresSQL Optimização de Interrogações Francisco Santos.
Correcção do 4º Mini-Projecto AOBD Pergunta 1 /* T1: 1 transacção por hora */ BEGIN TRANSACTION select avg(lugares_disponíveis) from ( select.
Optimização - 1 Optimização de perguntas 1 Processamento de selecções 2 Processamento de junções 3 Manipulação algébrica.
Sumário 1 SQL Embutida 2 Processamento de Consultas
Banco de Dados I Unidade 6 Processamento de Consultas Otimização Lógica.
Modelo de base de dados relacional
1 Structured Query Language (SQL) 4 SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.
PostgreSQL Índices Nuno Campos N.º Nuno Campos - N.º Índice Introdução Tipos de Índices – B-Tree – R-Tree – Hash – GiST Classes de Operadores.
Algoritmos de Junção – Sort Merge Join e Hash Join
Daniel Paulo Introdução Informações de uma tabela ou view podem ser encontradas de maneira mais rápida através da utilização.
UCSal – Bacharelado em Informática
Algoritmos para Seleção AULA 23 Profa. Sandra de Amo GBC053 – BCC.
José Antônio da cunha IFRN Administração de Banco de Dados.
José Antônio da Cunha IFRN Administração de Banco de Dados.
Transcrição da apresentação:

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. Considere ainda que estas relações têm as seguintes propriedades:  A relação R1 contém 10,000 tuplos.  A relação R2 contém 30,000 tuplos.  A relação R3 contém 20,000 tuplos.  Na relação R1, cada página de dados pode armazenar um máximo de 10 tuplos.  Na relação R2, cada página de dados pode armazenar um máximo de 15 tuplos.  Na relação R3, cada página de dados pode armazenar um máximo de 20 tuplos.

a) Estime o tamanho do resultado da junção natural entre as três tabelas (R1 |x| R2 |x| R3) e apresente uma estratégia eficiente para o seu processamento, tendo em atenção o tamanho das relações e indicando o custo em termos de operações de I/O. Poderá assumir a existência de índices sobre qualquer uma das 3 relações.

R1 - 10,000 tuplos/1000 páginas => 1 tuplo = 0.1 páginas R2 - 30,000 tuplos/2000 páginas => 1 tuplo = páginas R3 - 20,000 tuplos/1000 páginas => 1 tuplo = 0.05 páginas R2 |X| R1 = máx 10,000 tuplos (C é chave em R2)‏  1 tuplo = máx páginas => ~ 6 tuplos/página R2 |X| R3 = máx 20,000 tuplos (D é chave em R3)‏  1 tuplo = máx páginas => ~ 9 tuplos/página R3 |X| R1 |X| R2 = máx 10,000 tuplos (D é chave em R3)‏  1 tuplo = máx páginas => ~ 5 tuplos/página (nota: os valores apresentados acima são estimativas por excesso)‏

Uma estratégia eficiente seria:  Fazer primeiro R2 merge-join R1 (assumindo que existem índices sobre os atríbutos C das duas tabelas) Custo : R2p + R1p = = 3000 IO Tamanho da relação : approx páginas  Fazer um hash-join do resultado anterior com R3 Custo: 3*((R2 |x| R1)p + R3p) = 5301 IO Custo total: IO  Ou um merge join do resultado anterior com R3 se R3 se encontrar ordenada por um índice no atríbuto D. Custo: (R2 |x| R1)p + R3p = 2667 IO Custo total: 5667 IO

b) Para uma junção natural entre as tabelas R1 e R2, estime o número de acessos necessário à execução de cada um dos seguintes algoritmos, explicando sempre os cálculos necessários: i. Nested-loop join, podendo tanto R1 como R2 corresponder à inner table. ii. Merge join, assumindo que as relações não se encontram inicialmente ordenadas. iii. Hash join, assumindo que não existem colisões na função de hash.

Rb = nº de páginas, Rt = nº de tuplos  Nested Loop: block nested-loop join  R 1b * R 2b + R 1b = I/O  R 2b * R 1b + R 2b = I/O nested-loop join  R1t * R2b + R1b = I/O  R2t * R1b + R2b = I/O  Merge Join R1b + R2b + Sort(R1) + Sort(R2) = I/O Sort(R) = Rb * (2 * ⌈ log M-1 (Rb/M) ⌉ + 1)‏ M = 3  Hash Join 3 * (R1b + R2b) = 9000 I/O

2) Explique o conceito de “index intersection” usado no SQL Server 2005, relacionando-o com o facto de, em algumas situações, a existência de índices secundários poder trazer benefícios em termos de performance em comparação com índices primários. Apresente ainda um exemplo em que a utilização de index intersection seja vantajosa.

SQL Server pode usar vários índices para fazer a selecção de conjuntos de dados e depois fazer uma intersecção entre estes. Por exemplo, para a consulta: SELECT count (*) FROM orders WHERE o_orderdate between '9/15/1992' and '10/15/1992' and o_custkey between 100 and 200; SQL Server pode usar o índices em “o_custkey” e “o_orderdate” e aplicar um algoritmo de join para onter a intersecção dos dois conjuntos de ponteiros retornados. Isto deverá ser mais rápido visto que é mais eficiente ler apenas os índices de que as páginas de dados.

3) Em cada uma das seguintes situações, indique qual o algoritmo de junção que seria mais eficiente em termos de número de operações de I/O. Justifique a sua resposta. a)Junção natural entre duas tabelas a e b que sejam pequenas (i.e. todos os tuplos de a e b podem ser armazenados em memória) e para as quais não existam índices. b)Junção natural entre duas tabelas a e b para as quais não existam índices e em que o número de tuplos em a seja muito maior que o número de tuplos em b. c)Junção natural entre duas tabelas a e b, considerando que ambas contêm aproximadamente o mesmo número de tuplos e que existem índices sob o atributo sobre o qual se vai processar a junção das tabelas. d)Junção entre duas tabelas a e b, considerando que um operador diferente da igualdade entre atributos é usado na condição de junção das tabelas, e que existem índices sobre o atributo sobre o qual se vai processar a junção das tabelas.

Nested-loop join, visto as tabelas serem pequenas e não estarem ordenadas pelo atríbuto pelo qual se vai fazer a junçao. Hash-join, visto uma das tabelas ser muito mais pequena do que a outra e nenhuma das tabelas estar ordenada pelo atríbuto pelo qual se vai fazer a junçao. Merge-join, visto existirem indices que levem a que as tabelas se encontrem ordenadas pelo atríbuto pelo qual se vai fazer a junção. Nested-loop join, visto não estarmos na presença de um equi-join.

4) Explique a diferença entre cost based optimization e heuristic optimization, indicando situações em que um tipo de estratégia de optimização possa ser preferível ao outro. “Cost base optimization” requer um modelo de custos, i.e., estatísticas que suportem a estimativa de custos, e algoritmos de procura eficientes sobre o espaço dos planos de execução. “Heuristic optimization” é rápida e intuitiva, mas não garante a melhor solução. Um optimizador baseado em custos pode ter problemas com consultas complexas (e.g., consultas aninhadas). Para consultas com muitos joins, o próprio processo de procura do plano pode ser demasiado caro. Por outro lado, usando só heurísticas, seria difícil escolher entre um “full-table scan” ou um “index-scan”, visto que a sua eficiência depende da selectividade da consulta.

5) Considere que existe uma relação R=(a,b,c) contendo 5 milhões de tuplos, e que cada página de dados armazena um máximo de 10 tuplos. Assuma ainda que o atributo a é uma chave candidata, podendo tomar valores entre 1 e 5,000,000. Considede ainda que o optimizador de interrogações pode escolher entre as seguintes estratégias para aceder aos tuplos de R:  Aceder à tabela directamente.  Usar um indice clustered do tipo B+Tree sobre o atríbuto a.  Usar um índice hash no atributo a.

a) Para cada uma das seguintes interrogações, indique qual a aproximação mais eficiente em termos de I/O, justificando a sua resposta. i. σ a<5,000 (R)‏ ii. σ a>5,000 (R)‏ iii. σ a=5,000 (R)‏ iv. σ a>5,000 ∧ a<5,010 (R) v. σ ¬(a=5,000) (R)‏ vi. σ a>4,900,000 (R)‏

i. σ a<5,000 (R)‏ Querie muito selectiva, usar o índice B+Tree no atríbuto a. ii. σ a>5,000 (R)‏ Query pouco selectiva, fazer um full-table scan. iii. σ a=5,000 (R)‏ Querie por igualdade, utlizar o indice hash. iv. σ a>5,000 ∧ a<5,010 (R) Querie muito selectiva, usar o indice B+Tree (clustered index) em a. v. σ ¬(a=5,000) (R)‏ Querie pouco selectiva, full table scan. vi. σ a>4,900,000 (R) Querie muito selectiva, utilizar o indice B+Tree no atríbuto a.

b) Para cada uma das seguintes interrogações envolvendo uma negação, indique qual a aproximação mais eficiente em termos de I/O. Indique claramente os passos envolvidos no processamento das interrogações justificando se iria recorrer a índices para o seu processamento e/ou se iria substituir as expressões em álgebra relacional por outras que lhes sejam equivalentes. i. σ ¬(a<2,500,000) (R)‏ ii. σ ¬(a=2,500,000) (R)‏ iii. σ ¬(a<2,500,000 ∨ b<5000) (R)‏

i. σ ¬(a<2,500,000) (R)‏ Equivalente a select(a>= )(R) – a consulta iria retornar approx. metade dos tuplos. Como o índice é clustered, deveria ser usado para retornar todos os tuplos satisfazendo a condição. ii. σ ¬(a=2,500,000) (R)‏ Querie pouco selectiva, full table scan. iii. σ ¬(a<2,500,000 ∨ b<5000) (R)‏ Equivalente a select(a>= AND b>=5000)(R). Usar o índice B+Tree sobre a para a primeira condição de selecção (index scan). Nos resultados deste primeiro passo, seleccionar apenas os tuplos que satisfaçam a segunda condição.