Mini-Projecto 1 – AOBD – 2007/2008

Propaganda
Mini-Projecto 2 – AOBD – 2007/2008
(a entregar na aula teórica do dia 17/4/2008)
Identifique a resolução com o número de grupo
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.
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.
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.
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.
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.
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)
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)
Download