Algoritmos para processamento e otimização de consultas (Otimização baseada em custos) Cristiano...
Transcript of Algoritmos para processamento e otimização de consultas (Otimização baseada em custos) Cristiano...
![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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/1.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/2.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/3.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/4.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/5.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/6.jpg)
Í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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/7.jpg)
Í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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/8.jpg)
Í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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/9.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/10.jpg)
Í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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/11.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/12.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/13.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/14.jpg)
…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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/15.jpg)
Í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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/16.jpg)
… 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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/17.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/18.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/19.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/20.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/21.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/22.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/23.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/24.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/25.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/26.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/27.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/28.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/29.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/30.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/31.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/32.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/33.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/34.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/35.jpg)
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.](https://reader035.fdocumentos.com/reader035/viewer/2022062512/552fc12f497959413d8d4139/html5/thumbnails/36.jpg)
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