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

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

Algoritmos para processamento e otimização de consultas (Otimização baseada em custos) Cristiano Galina Slides adaptados do livro Sistema de Banco de Dados.

Apresentações semelhantes


Apresentação em tema: "Algoritmos para processamento e otimização de consultas (Otimização baseada em custos) Cristiano Galina Slides adaptados do livro Sistema de Banco de Dados."— Transcrição da apresentação:

1 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 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...... precisamos entender brevemente, por enquanto, as estruturas de indexação

4 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 – Índices primários – Índices clustering – Índices secundários

6 Í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 – Í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 20 10 40 30 60 50 80 70 100 90 Índice Denso 10 20 30 40 50 60 70 80 90 100 110 120 Arquivo Seqüencial

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 20 10 40 30 60 50 80 70 100 90 Índice Esparso 10 30 50 70 90 110 130 150 170 190 210 230 Arquivo Seqüencial

12 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 1.Í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 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

14 …Tipos de índices ordenados em nível único 2.Í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 Um índice clustering para o campo DEPTNUMBER, que não é campo chave de classificação, de um arquivo empregado

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 3.Í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 codEmp CPF

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

19 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 Implementação da operação select: Exemplo: (OP1): SSN='123456789' (EMPLOYEE) (OP2): DNUMBER>5 (DEPARTMENT) (OP3): DNO=5 (EMPLOYEE) (OP4): DNO=5 AND SALARY>30000 AND SEX=F (EMPLOYEE) (OP5): ESSN=123456789 AND PNO=10 (WORKS_ON)

21 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 SSN='123456789' (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='123456789' na opera ç ão OP1

22 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) 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) Métodos de busca para seleção complexa (conjuntiva): Ex: OP4 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) Métodos de busca para seleção complexa (conjuntiva): Ex: OP4 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) 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) 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) 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) 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) 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 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 (R) Se contém a chave de R Extraia os atributos em 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) 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) União, interseção e diferença 1.Ordene as relações segundo o mesmo atributo 2.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 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) 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 "Algoritmos para processamento e otimização de consultas (Otimização baseada em custos) Cristiano Galina Slides adaptados do livro Sistema de Banco de Dados."

Apresentações semelhantes


Anúncios Google