A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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 Pós-Graduação em CC - UFU Sistemas de Banco de Dados

2 Catálogo do Sistema Informações armazenadas no catálogo, necessárias no processo de otimização: Informações gerais: Tamanho do buffer pool (espaço livre) Tamanho de uma página em disco Informações sobre as tabelas Informações sobre índices Informações sobre visões Estatísticas sobre tabelas e indices: atualizadas periodicamente Informações sobre usuários: contas, autorizações de acesso (escrita, leitura), etc. Alguns SGBDs mais sofisticados: Histogramas sobre a distribuição dos valores de cada atributo. A partir destas informações é possivel ter informação mais acurada sobre o tamanho dos resultados de uma operação, sobre a seletividade de um método de acesso, etc.

3 Informações sobre tabelas, índices e visões
Nome da tabela, nome ou identificador do arquivo, estrutura de arquivo (heap, ordenado, hash) Nome e tipo de cada atributo Nome dos índices existentes para cada tabela As restrições de integridade (chaves primárias, chaves candidatas, chaves estrangeiras, etc) para cada tabela Indices O nome do índice e sua estrutura (hash, b+tree) A chave do índice Visões Nome da visão e sua definição (o código da consulta SQL que a define)

4 Estatísticas sobre tabelas e indices:
NTuples (R) = Número de tuplas da tabela R NPages(R) = Número de páginas da tabela R NKeys(I) = número de chaves distintas do Indice I INPages(I) = número de páginas do indice I (no caso de B+tree = número de folhas) IHeight(I) = Altura do Indice (no caso de B+tree) ILow(I) = menor valor de chave do indice I IHigh(I) = maior valor de chave do indice I

5 Como o catálogo é armazenado : Coleção de Tabelas
Exemplo Sailors(sid:integer, sname:string, rating:integer, age:real) Reservas(sid:integer, bid:integer, day:dates, rname:string) Tabela do catálogo: Attribute_Cat(atname:string, relname:string, type:string, position:integer) Catálogo pode ser consultado usando SQL ! Escolha das tabelas do catálogo e seus esquemas depende do implementador do SGBD.

6 Uma tabela do catálogo atname relname type position Attribute_Cat
string 1 2 3 integer 4 sid Sailors sname rating age real Reservas bid day dates rname

7 Plano de Execução Π SELECT S.sname FROM Reservas R, Sailors S
WHERE R.sid = S.sid AND R.bid = 100 AND S.rating > 5 Π sname σ bid=100 and rating > 5 sid=sid Reservas Sailors

8 Complementando o plano: como será implementado ?
Π On-the-fly sname σ bid=100 and rating > 5 On-the-fly Simple Nested Loops página a página sid=sid Reservas Sailors (scan) (scan) Tabela externa Tabela interna

9 Pipeline versus Tabelas Materializadas
Pipeline : resultado de uma operação é transferido para a próxima operação sem a criação de uma tabela em disco. Economia de custos de armazenamento e de leitura posterior Sempre que o algoritmo do operador para o qual é transferido o resultado permitir, a técnica de pipeline é utilizada.

10 Exercício Diga se é possível utilizar a estratégia de pipeline para implementar um duplo join utilizando o algoritmo NLJ/p-p para os dois Joins A B C Em caso afirmativo, explique como funciona o algoritmo.

11 Estimativa de Custos de um Plano de Execução
Para cada nó da árvore N da árvore, seja Op(N) a operação associada a N. Tarefas do Estimador de Custos Estimar do custo de Op(N) Estimar o tamanho do resultado de Op(N)

12 Estimativa do Tamanho do Resultado
SELECT <lista de atributos> FROM < lista de relações R1,...,Rk > WHERE <cond1 ^ cond2 ^....^condn> Número máximo de tuplas no resultado = M1.M2....Mk, onde Mi = tamanho de Ri Cláusula WHERE atua como um redutor desta estimativa Cada condição do WHERE tem o seu fator de redução próprio

13 Fatores de Redução R.A = valor R.A = R.B
Fator de redução = 1/NKeys(I), caso exista um indice I com chave A para a relação R Fator de redução = 1/10, caso contrário (ou utiliza-se estatísticas mantidas no catálogo sobre a distribuição dos valores dos atributos) R.A = R.B Fator de redução = 1/Max(NKeys(IA),NKeys(IB)) se existe indices IA e IB com chave A e B respectivamente. Fator de redução = 1/NKeys(I) se somente um dos atributos é chave de um indice I Fator de redução = 1/10 caso contrário.

14 Fatores de Redução R.A > valor R.A IN (Lista de valores)
Fator de redução = (High(I) – valor) / High(I) – Low(I) caso exista um indice I com chave A para a relação R Fator de redução = fração < ½ caso não exista indice ou se o valor não é aritmético R.A IN (Lista de valores) Fator de redução = N*(fator de redução de R.A = valor), onde N = núm. de itens Fator de redução = fração < ½ caso não exista índice ou se o valor não é aritmético.

15 Fatores de Redução R.A IN (Subconsulta) NOT (Cond)
Fator de redução: M/N onde M = tamanho do resultado da Subconsulta N = número de valores do atributo R.A NOT (Cond) Fator de redução: (1 – Fator de Redução(Cond)) Fator de Redução da Projeção = fração equivalente ao tamanho dos atributos que não são projetados.

16 Histogramas Estimativas do fator de redução: supõem que os valores dos atributos são distribuídos uniformemente. Histogramas: Técnica mais sofisticada e acurada para estimar o fator de redução Necessita que estatísticas sobre a variação dos valores dos atributos sejam armazenadas no catálogo e atualizadas periodicamente.

17 Histograma 9 8 4 4 3 3 3 3 2 2 2 2 1 1 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14

18 Histograma 45 tuplas, 15 valores
Distribuição uniforme: 3 tuplas para cada valor Distribuição não-uniforme: número de tuplas para cada valor pode variar bastante Histograma: estrutura mantida pelo SGBD em seu catálogo que dá uma estimativa do número de tuplas por faixa de valor

19 Histograma por largura
9 8 4 4 3 3 3 3 2 2 2 2 1 1 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5 5 5 5 2.67 1.33 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

20 Histograma por largura
Qual a estimativa da quantidade de tuplas com AGE > 13 ? Distribuição uniforme: 3 tuplas Distribuição histograma: 5 tuplas 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5 5 5 5 2.67 1.33 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

21 Histograma por profundidade
Qual a estimativa da quantidade de tuplas com AGE > 13 ? 9 Distribuição histograma = 9 tuplas 6 6 2.67 1.80 1.75 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8 tuplas 7 tuplas 12 tuplas 9 tuplas 9 tuplas

22 Histogramas comprimidos
Histogramas por profundidade produzem melhores estimativas do que histogramas por largura Histogramas comprimidos Mantém contadores para valores mais frequentes (por exemplo idade = 7 e idade = 14) Para os outros valores, mantém um histograma por profundidade (de preferência) ou por largura. Muitos SGBDs utilizam histograma por profundidade, alguns utilizam mesmo histogramas comprimidos.

23 Planos de execução para múltiplos “Join”
A B C D PLANO POR PROFUNDIDADE À ESQUERDA D B C D A D PLANO BUSHY C C A B A B PLANOS LINEARES

24 Planos por profundidade à esquerda
São os únicos a serem considerados: Quanto maior o número de joins maior o número de planos alternativos. Por isto opta-se por considerar somente os left-deep. Planos left-deep permitem utilizar estratégia pipeline à esquerda com a relação externa. A relação interna é sempre uma relação de base (materializada). Repare que não é possível utilizar pipeline à direita de um join. É sempre necessário que a relação interna esteja disponível em sua integralidade, pois é varrida diversas vezes. No caso de planos left-deep, este problema não acontece, pois o filho à direita de um Join é sempre uma relação de base (materializada).

25 Planos para Consultas Aninhadas
SELECT S.sname FROM Sailors S WHERE S.rating = (SELECT MAX (S2.rating) FROM Sailors S2) Subconsulta interna: SELECT MAX (S2.rating) FROM Sailors S2 Executada uma única vez, produzindo um número X WHERE S.rating = X

26 Planos para Consultas Aninhadas
SELECT S.sname FROM Sailors S WHERE S.sid IN (SELECT R.sid FROM Reserves R WHERE R.bid = 103) Estratégia de execução comum Subconsulta interna é avaliada e materializada (T) Faz-se um Join Sailors = relação externa T = relação interna (subconsulta sempre é relação interna) Alguns SGBDs têm estratégias mais sofisticadas: Pode tranformar T em relação externa do Join e Sailors na interna, caso for mais vantajoso, por exemplo, se Sailors possui indice Hash no atributo sid

27 Tratamento de Consultas Aninhadas Correlatas
SELECT S.sname FROM Sailors S WHERE EXISTS (SELECT * FROM Reserves R WHERE R.bid = 103 AND S.sid = R.sid) Consulta externa e interna são correlatas: atributo sid da externa aparece na consulta interna. Não é possível avaliar a consulta interna uma única vez. Estratégia típica de execução: consulta interna é calculada para cada tupla de S

28 Aninhadas versus não-aninhadas
Uma consulta aninhada frequentemente é equivalente a uma não aninhada. Consultas aninhadas correlatas frequentemente têm uma versão sem correlação. Um otimizador tipico é capaz de encontrar um bom plano de execução se dispõe de uma versão não-aninhada ou sem correlações. Boa parte dos otimizadores não são capazes de transformar consultas aninhadas em não aninhadas ou de eliminar correlações. Assim, fica a cargo do usuário formular a consulta de modo a evitar aninhamentos e/ou correlações.

29 Cálculo de Custos de Planos de Execução
EXERCÍCIOS Cálculo de Custos de Planos de Execução

30 Cálculo de Custos de Planos de Execução
Exercício1 : Calcule o custo deste plano R : 1000 páginas S : 500 páginas R: 100 tuplas por página S: 80 tuplas por página Π On-the-fly sname σ bid=100 and rating > 5 On-the-fly Simple Nested Loops página a página sid=sid Reservas Sailors (scan) (scan) Tabela externa Tabela interna

31 “Empurrando” seleções para baixo na árvore de execução
Exercicio 2: Calcule o custo deste plano Número de valores para bid = 100 Rating varia de 1 a 10 Uniformemente distribuidos Numero de páginas no buffer = 5 Π On-the-fly sname Sorte-Merge Join sid=sid Scan, write to Temp1 σ σ Scan, write to Temp2 bid=100 rating > 5 Reservas Sailors (scan) (scan) Tabela externa Tabela interna

32 “Empurrando” seleções para baixo na árvore de execução
Exercicio 3 : Calcule o custo deste plano Número de valores para bid = 100 Rating varia de 1 a 10 Uniformemente distribuidos Numero de páginas no buffer = 5 Π On-the-fly sname Block Nested Looping Join sid=sid Scan, write to Temp1 σ σ Scan, write to Temp2 bid=100 rating > 5 Reservas Sailors (scan) (scan) Tabela externa Tabela interna

33 “Empurrando” projeções para baixo na árvore de execução
Exercicio 4 : Calcule o custo deste plano Número de valores para bid = 100 Rating varia de 1 a 10 Uniformemente distribuídos Número de páginas no buffer = 5 Π On-the-fly sname Block Nested Looping Join sid=sid Π Π On-the-fly On-the-fly sid,sname sid σ σ Scan, write to Temp1 rating > 5 bid=100 Scan, write to Temp2 Reservas Sailors (scan) (scan) Tabela externa Tabela interna

34 Nem sempre “empurrar seleções abaixo do join é vantajoso”
Π Exercício 5 : Calcule o custo deste plano Número de valores para bid = 100 Rating varia de 1 a 10 Uniformemente distribuídos Número de páginas no buffer = 5 On-the-fly sname σ rating > 5 On-the-fly Index Nested Loops com pipeline sid=sid σ On-the-fly bid=100 Sailors (tem índice hash em sid, não necessariamente agrupado) (tem índice hash em bid, agrupado e estático) Reservas Tabela externa Tabela interna

35 Nem sempre execuções em pipeline são mais vantajosas que as materializadas
Π Exercício 6 : Calcule o custo deste plano Número de valores para bid = 100 Rating varia de 1 a 10 uniformemente distribuídos Número de páginas no buffer = 5 Todos os marinheiros fizeram reservas de barcos. Reservas distribuidas uniformemente entre os marinheiros. Todos os barcos foram reservados um mesmo número de vezes On-the-fly sname σ rating > 5 On-the-fly Index Nested Loops sid=sid Scan, write to Temp ordena por sid σ bid=100 Sailors (tem índice hash em sid) (tem índice hash em bid, agrupado e estático) Reservas Tabela externa Tabela interna

36 Seleção por atributo chave “empurrada” abaixo do Join é muito vantajosa.
Π Exercício 7 : Calcule o custo deste plano Número de valores para bid = 100 Rating varia de 1 a 10 uniformemente distribuídos Número de páginas no buffer = 5 Todos os marinheiros fizeram reservas de barcos. Reservas distribuidas uniformemente entre os marinheiros. (bid,day) é chave de Reservas On-the-fly sname σ rating > 5 On-the-fly Index Nested Loops com pipeline sid=sid σ On-the-fly day = 09/09/82 σ Sailors (tem índice hash em sid) On-the-fly bid=100 (tem índice hash em bid, agrupado e estático) Tabela interna Reservas Compare com o custo do plano do exercicio 1. Tabela externa


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google