algoritmos para processamento e otimização de consultas (otimização baseada em custos) cristiano...

36
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

Upload: internet

Post on 18-Apr-2015

109 views

Category:

Documents


2 download

TRANSCRIPT

Page 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

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çãocapítulo 15

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

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

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

Antes...

• Para entendermos a otimização baseada em custos...

... precisamos entender brevemente, por enquanto, as estruturas de indexação

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

Estruturas de indexação de arquivos

Cristiano T. Galina

Slides adaptados do livro Sistema de Banco de Dados Elmasri & Navathe

4a. Ediçãocapítulo 14

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

Roteiro• Índices• Tipos de índices ordenados em nível único

– Índices primários– Índices clustering– Índices secundários

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

Í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

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

Í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

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

Í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

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

2010

4030

6050

8070

10090

Índice Denso

10203040

50607080

90100110120

Arquivo Seqüencial

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

Í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

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

2010

4030

6050

8070

10090

Índice Esparso

10305070

90110130150

170190210230

Arquivo Seqüencial

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

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

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

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

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

…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

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

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

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

… 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

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

Um índice secundário denso (com ponteiros de bloco) em um campo que não é chave de classificação de um arquivo

codEmp CPF

CPF

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

Roteiro

1. Algoritmos para as operações select e join2. Algoritmos para as operações project e de

conjunto

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

Roteiro

1. Algoritmos para as operações select e join2. Algoritmos para as operações project e de

conjunto

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

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)

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

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

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

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

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

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 <=

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

Roteiro

1. Algoritmos para as operações select e join2. Algoritmos para as operações project e de

conjunto

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

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)

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

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

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

2. Algoritmos para as operações PROJECT e de conjunto (3)

União, interseção e diferença1. Ordene as relações segundo o mesmo atributo2. 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

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

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

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

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