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

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

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.

Apresentações semelhantes


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

1 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 de Dados Elmasri & Navathe 4a. Edição capítulo 15

2 Definição do Plano de Execução
4/1/2017 Definição do Plano de Execução Analisar alternativas de processamento Escolher a melhor alternativa Diversas medidas podem ser consideradas tempo CPU, comunicação, acessos a disco medida mais relevante (“gargalo”): acessos a disco para avaliar o custo de uma alternativa análise de estimativas sobre os dados tamanho das tabelas, existência de índices, seletividade, ... custo dos algoritmos de processamento de operações algébricas

3 Antes... Para entendermos a otimização baseada em custos...
4/1/2017 Antes... Para entendermos a otimização baseada em custos... ... precisamos entender brevemente, por enquanto, as estruturas de indexação

4 Estruturas de indexação de arquivos
4/1/2017 Estruturas de indexação de arquivos Cristiano T. Galina Slides adaptados do livro Sistema de Banco de Dados Elmasri & Navathe 4a. Edição capítulo 14

5 Roteiro Índices Tipos de índices ordenados em nível único
4/1/2017 Roteiro Índices Tipos de índices ordenados em nível único Índices primários Índices clustering Índices secundários

6 Índices Estruturas de acesso adicionais
4/1/2017 Índices Estruturas de acesso adicionais Aumentar a velocidade de recuperação de registros na resposta a certas condições de busca Acesso eficiente aos registros a partir de campos de indexação que são usados para construir o índice Para encontrar um registro (s) com base em certo critério de seleção Acessar o índice Aponta para um ou mais blocos do arquivo em que os registros requeridos estão localizados

7 Índices como caminhos de acesso
4/1/2017 Índices como caminhos de acesso Índices podem ser caracterizados como densos ou esparsos Denso Tem uma entrada para cada valor de chave de busca Aponta para o primeiro registro

8 Índice Denso Uma seqüência de blocos contendo apenas as chaves dos registros e os ponteiros para os próprios registros. Mantém as chaves na mesma ordem classificada encontrada no arquivo de dados. Busca binária Como o tamanho de chaves e ponteiros é menor que de todos dados em si, pode caber todo na memória principal. Com isto podemos encontrar qualquer registro, dada sua chave, com poucas operações de E/S

9 Índice Denso Arquivo Seqüencial 10 20 30 40 50 60 70 80 90 100 10 20
110 120 100 90

10 Índice Esparso Contém apenas um par chave-ponteiro por bloco de dados.
A chave corresponde ao primeiro registro do bloco. Utiliza menos espaço. Porém, o custo para encontrar um registro, dado sua chave, é um pouco maior

11 Índice Esparso Arquivo Seqüencial 10 20 30 40 50 60 70 80 90 100 10 30
110 130 150 60 50 80 70 170 190 210 230 100 90

12 Roteiro Tipos de índices ordenados em nível único Índices primários
4/1/2017 Roteiro Tipos de índices ordenados em nível único Índices primários em um arquivo ordenado sequencialmente, o índice cuja chave de busca especifica a ordem sequencial do arquivo. A chave de busca de um índice primário é geralmente a chave primária Ex: índice pra numEmp e arquivo de dados ordenado por numEmp Índice clustering o arquivo de dados é ordenado por um campo não chave Ex: índice pra codDepto em Empregado, e arquivo de dados ordenado por codDepto (o codDepto se repete em várias linhas) Índice secundário um índice cuja chave de busca especifica uma ordem diferente da ordem sequencial do arquivo Ex: índice pra CPF e arquivo de dados ordenado por codEmp

13 Tipos de índices ordenados em nível único
Considerando o exemplo: alguns blocos de um arquivo ordenado (sequencial) de registros de empregado tendo nome como campo chave de classificação... Índice primário para o campo chave de classificação 4/1/2017 Tipos de índices ordenados em nível único Índice primário Em um arquivo ordenado sequencialmente, o índice cuja chave de busca especifica a ordem sequencial do arquivo A chave de busca de um índice primário é geralmente a chave primária O arquivo de dados é ordenado pelo campo chave Inclui uma entrada de índice para cada bloco no arquivo de dados; a entrada do índice tem o valor do campo chave para o primeiro registro no bloco, o qual é chamado bloco âncora Um índice primário é um índice esparso (não denso) inclui uma entrada para bloco de disco do arquivo de dados e chaves do arquivo âncora, ao invés de para cada valor de pesquisa

14 …Tipos de índices ordenados em nível único
Um índice clustering para o campo DEPTNUMBER, que não é campo chave de classificação, de um arquivo empregado 4/1/2017 …Tipos de índices ordenados em nível único Índices Clustering Definido em um arquivo de dados ordenado O arquivo de dados é ordenado por um campo não chave (ao contrário do índice primário) Inclui uma entrada de índice para cada valor distinto do campo A entrada do índice aponta para o primeiro bloco de dados que contém registros com o valor do campo Esparso

15 Índice clustering com um grupo (cluster) separado de blocos para cada grupo de registros que compartilhem o mesmo valor de campo de clustering

16 … Tipos de índices ordenados em nível único
4/1/2017 … Tipos de índices ordenados em nível único Índice secundário Um índice cuja chave de busca especifica uma ordem diferente da ordem sequencial do arquivo. Fornece um meio secundário de acessar um arquivo para o qual algum acesso primário já existe O índice secundário pode ser em um campo que é uma chave candidata e tem um valor único em cada registro, ou uma chave não única com valores duplicados Inclui uma entrada para cada registro no arquivo de dados Índice denso

17 Um índice secundário denso (com ponteiros de bloco) em um campo que não é chave de classificação de um arquivo 4/1/2017 codEmp CPF CPF

18 1. Algoritmos para as operações select e join
4/1/2017 Roteiro 1. Algoritmos para as operações select e join 2. Algoritmos para as operações project e de conjunto

19 1. Algoritmos para as operações select e join
4/1/2017 Roteiro 1. Algoritmos para as operações select e join 2. Algoritmos para as operações project e de conjunto

20 1. Algoritmos para as operações de select e join
4/1/2017 1. Algoritmos para as operações de select e join Implementação da operação select: Exemplo: (OP1): s SSN=' ' (EMPLOYEE) (OP2): s DNUMBER>5 (DEPARTMENT) (OP3): s DNO=5 (EMPLOYEE) (OP4): s DNO=5 AND SALARY>30000 AND SEX=‘F’ (EMPLOYEE) (OP5): s ESSN= AND PNO=10 (WORKS_ON)

21 1. Algoritmos para as operações de select e join (2)
4/1/2017 1. Algoritmos para as operações de select e join (2) Métodos de busca para seleção simples: S1. Busca linear (força bruta): recupera cada registro do arquivo e testa se seus valores de atributos satisfazem a condição de seleção Equivalente a Busca Sequencial S2. Busca binária: se a condição de seleção envolver uma comparação de igualdade em um atributo chave para o qual o arquivo está ordenado Mais eficiente que busca linear Ex: OP1 s SSN=' ' (EMPLOYEE) S3. Utilização de um índice primário: se a condição de seleção envolver uma comparação de igualdade em um atributo chave com um índice primário Ex: SSN=' ' na operação OP1

22 1. Algoritmos para as operações de select e join (3)
4/1/2017 1. Algoritmos para as operações de select e join (3) S4. Utilização de um índice primário para recuperar múltiplos registros: Se a condição de comparação for >, ≥, <, or ≤ em um campo chave com índice primário Ex: DNUMBER>5 na operação OP2 Recupere todos os registros seguintes no arquivo ordenado S5. Utilização de um índice cluster para recuperar múltiplos registros: Se a condição de seleção envolver uma comparação de igualdade em um atributo não chave com um índice clustering Ex: DNO=5 na OP3

23 1. Algoritmos para as operações de select e join (4)
4/1/2017 1. Algoritmos para as operações de select e join (4) S6. Utilização de um índice secundário em uma comparação de igualdade: recuperar um único registro se o campo de indexação for uma chave ou recuperar múltiplos registros se o campo de indexação não for chave Também pode ser usado para comparações envolvendo >, >=, < ou <=

24 1. Algoritmos para as operações de select e join (5)
4/1/2017 1. Algoritmos para as operações de select e join (5) Métodos de busca para seleção complexa (conjuntiva): Ex: OP4 s DNO=5 AND SALARY>30000 AND SEX=‘F’ (EMPLOYEE) S7. Seleção conjuntiva utilizando um índice individual: se um atributo envolvido possui um caminho de acesso que permita o uso de um dos métodos S2 a S6 use aquela condição para recuperar os registros depois verifique se cada registro recuperado satisfaz as condições simples restantes da conjunção

25 1. Algoritmos para as operações de select e join (5)
4/1/2017 1. Algoritmos para as operações de select e join (5) Métodos de busca para seleção complexa (conjuntiva): Ex: OP4 s DNO=5 AND SALARY>30000 AND SEX=‘F’ (EMPLOYEE) S8. Seleção conjuntiva utilizando um índice composto se dois ou mais atributos estiverem envolvidos em condições de igualdade na condição conjuntiva e houver um índice composto para a combinação dos campos então usa-se o índice diretamente

26 1. Algoritmos para as operações de select e join (6)
4/1/2017 1. Algoritmos para as operações de select e join (6) S9. Seleção conjuntiva por meio da interseção de registros: se índices secundários (ou outros caminhos de acesso) estiverem disponíveis para mais de um dos campos envolvidos nas condições simples de uma condição conjuntiva e se os índices incluirem ponteiros de registros (em vez de ponteiros de blocos), cada índice poderá ser usado para recuperar o conjunto de ponteiros de registros que satisfaça a condição individual a interseção destes conjuntos de ponteiros de registros resulta nos ponteiros de registros que satisfazem a condição conjuntiva e que são usados depois para recuperar diretamente aqueles registros se apenas algumas das condições possuir índices secundários, cada registro recuperado será posteriormente testado para determinar se ele satisfaz as condições restantes.

27 1. Algoritmos para as operações de select e join (7)
4/1/2017 1. Algoritmos para as operações de select e join (7) Sempre que uma condição individual especifica a seleção, podemos verificar se existe um caminho de acesso no atributo envolvido naquela condição. Se houver: o método correspondente àquele caminho será utilizado Caso contrário: a abordagem da força bruta (S1) será utilizada Em condições de seleção conjuntivas, sempre que mais de um dos atributos envolvidos nas condições tiver um caminho de acesso O otimizador deve escolher o caminho que recupera o menor número de registros de forma mais eficiente Por meio de estimativas de custos Veremos mais tarde

28 1. Algoritmos para as operações de select e join (8)
4/1/2017 1. Algoritmos para as operações de select e join (8) Implementação do operador JOIN: tempo! Join (EQUIJOIN, NATURAL JOIN) Examples para os algoritmos a seguir: (OP6): EMPLOYEE DNO=DNUMBER DEPARTMENT (OP7): DEPARTMENT MGRSSN=SSN EMPLOYEE

29 1. Algoritmos para as operações de select e join (8)
4/1/2017 1. Algoritmos para as operações de select e join (8) J1. Junção de laço aninhado (nested loop) -força bruta Para cada registro t em R (laço externo) Recupere cada registro s em S Teste se os dois registros satisfazem a condição de junção J2. Junção de laço único (single loop) Usando uma estrutura de acesso para recuperar os registros correspondentes à junção Se existir um índice para um dos dois atributos de junção (por ex, B de S) recupere cada registro t em R (um por vez) Use a estrutura de acesso para recuperar os registros em S que satisfaçam a condição de junção

30 1. Algoritmos para as operações de select e join (9)
4/1/2017 1. Algoritmos para as operações de select e join (9) J3. Junção ordenação-fusão (sort-merge) Se os registros de R e S estiverem ordenados pelos valores dos atributos da junção Forma mais eficiente! Varrer ambos arquivos simultaneamente Fazendo a correspondência dos registros que possuem os mesmos valores para os atributos de junção

31 1. Algoritmos para as operações select e join
4/1/2017 Roteiro 1. Algoritmos para as operações select e join 2. Algoritmos para as operações project e de conjunto

32 2. Algoritmos para as operações PROJECT e de conjunto
4/1/2017 2. Algoritmos para as operações PROJECT e de conjunto <attribute list>(R) Se <lista de atributos> contém a chave de R Extraia os atributos em <lista de atributos> para todas tuplas Caso contrário Tuplas duplicadas devem ser removidas Métodos para remover duplicatas Ordenação do resultado Eliminar tuplas idênticas consecutivas Hashing Compara pelo hash: (bucket: se mesmo hash, não insere)

33 2. Algoritmos para as operações PROJECT e de conjunto (2)
4/1/2017 2. Algoritmos para as operações PROJECT e de conjunto (2) União, interseção, diferença e produto cartesiano Produto cartesiano Cara! Um registro para cada combinação de registros das duas tabelas Linhas: n*m Atributos: n+m Evitá-la! Substituir por outras operações equivalentes durante a otimização da consulta

34 2. Algoritmos para as operações PROJECT e de conjunto (3)
4/1/2017 2. Algoritmos para as operações PROJECT e de conjunto (3) União, interseção e diferença Ordene as relações segundo o mesmo atributo Uma única varredura por meio de cada relação é suficiente para produzir o resultado União Varredura e fusão de ambos arquivos ordenados simultaneamente Sempre que houver a mesma tupla em ambas relações Apenas uma é mantida no resultado da fusão Intersecção Manter no resultado da fusão apenas as tuplas que aparecem em ambas as relações

35 OBS: Algoritmos para ordenação externa
4/1/2017 OBS: Algoritmos para ordenação externa Ordenação Algoritmo básico Ex. SQL: order by Resultado da consulta deve ser ordenado Também é componente chave nos algoritmos de junção e outras operações (união, interseção), eliminação de duplicatas (project-distinct) Ordenação externa Para arquivos de registros grandes Não cabem inteiramente na memória

36 OBS: Algoritmos para ordenação externa (2)
4/1/2017 OBS: Algoritmos para ordenação externa (2) Típico algoritmo de ordenação externa Estratégia sort-merge (ordenação-fusão) Ordena pequenos sub-arquivos (runs – resultados parciais) do arquivo principal Realiza a fusão dos runs ordenados Criando subarquivos maiores ordenados, que por sua vez são fundidos Mais tarde, veremos como desenvolver fórmulas para estimar o custo de acesso nestes métodos de busca em função do número de acessos a blocos e do tempo de acesso


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

Apresentações semelhantes


Anúncios Google