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 Índice Denso 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 Índice Esparso 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=' ' (EMPLOYEE) (OP2): DNUMBER>5 (DEPARTMENT) (OP3): DNO=5 (EMPLOYEE) (OP4): DNO=5 AND SALARY>30000 AND SEX=F (EMPLOYEE) (OP5): ESSN= 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=' ' (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) 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