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

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

Starburst Optimização de Interrogações Francisco Santos.

Apresentações semelhantes


Apresentação em tema: "Starburst Optimização de Interrogações Francisco Santos."— Transcrição da apresentação:

1 Starburst Optimização de Interrogações Francisco Santos

2 Agenda Introdução Objectivo do Starburst Processamento Interrogações Query Graph Model Reescrita de Interrogações Optimização do Plano Bibliografia

3 Introdução O que é a optimização de interrogações? SQL é uma linguagem declarativa e, como tal, não define o procedimento para a execução de uma interrogação No entanto, a linguagem permite expressar a mesma interrogação de formas diferentes, podendo levar o SGBD a escolher um procedimento de execução (plano) sub- óptimo Opimização é o processo de escolha do plano mais eficiente para a execução da interrogação

4 Introdução Como optimizar uma interrogação? O optimizador deve elaborar uma representação interna que lhe permita conhecer a interrogação: Quais as tabelas acedidas? Que predicados foram empregues? Existe junção entre tabelas? Existe aninhamento de interrogações? Usando a rep. interna, o optimizador transforma as interrogações na sua forma mais declarativa possível Tendo a interrogação na sua forma mais declarativa possível, é escolhida a estratégia para a sua execução: Exemplo: acesso ao ficheiro através de um Heap, Indice, Sequência; Join usando o algoritmo de merge-sort, nested loops, hash join, …

5 Objectivo do Starburst O objectivo do projecto Starburst (IBM) é o de: Analisar as mudanças necessárias aos SGBDs tradicionais de forma a corresponder as necessidades das novas aplicações e tecnologias. - [SCFL+86] Exemplos de novas aplicações incluem: aplicações estatísticas, CAD, GIS, sistemas gestão documental Como responder às necessidades das novas aplicações preservando as vantagens dos SGBDs tradicionais? Controlo de concorrência, recuperação, linguagem especializada para a formulação de interrogações

6 Processamento Interrogações

7 Query Graph Model Exemplo: alunos( aid:string, nome:string, idade:integer, media:real ) inscricoes( aid:string, cid:string, nota:integer ) aid FK Alunos Q: Quais são os alunos: aid e nome, cuja nota no TFC é igual ou superior em três unidades à sua média de curso? SELECT Q1.aid, Q1.nome FROM alunos Q1 WHERE Q1.aid IN ( SELECT Q3.aid FROM inscricoes Q3 WHERE Q3.nota >= Q1.media + 3 AND Q3.cid = TFC )

8 Query Graph Model Construtores para o Query Graph Model (QGM): Qis – iteradores, representam acessos a tabelas: Setformers (F) – podem aparecer no resultado final Quantifiers (, ) – usados para eliminar tuplos do resultado final Qis – iteradores, representam acessos a tabelas: Setformers (F) – podem aparecer no resultado final Quantifiers (, ) – usados para eliminar tuplos do resultado final Conjunção de Predicados: p 1 p 2 … p n Conjunção de Predicados: p 1 p 2 … p n … p1p1 pnpn Tabelas: Materializadas – existe na BD Derivadas – gerada a partir de uma operação (interrogação) Tabelas: Materializadas – existe na BD Derivadas – gerada a partir de uma operação (interrogação) Der.Mat.

9 Query Graph Model aid nome … alunos … inscricoes aid Q1.aid = Q2.aid Q1(F) Q2( ) Q3(F) Q3.nota >= Q1.media + 3 Q3.cid = TFC T1 OP1: T2 OP2:

10 Query Rewrite Regra 1: COND: existe no máximo um tuplo da sub-interrogação que corresponde a cada tuplo da interrogação principal. ACÇÃO: converter iterador do tipo num iterador do tipo F. Regra 1: COND: existe no máximo um tuplo da sub-interrogação que corresponde a cada tuplo da interrogação principal. ACÇÃO: converter iterador do tipo num iterador do tipo F. Regra 2: COND: OP1 é SELECT, OP2 é SELECT, Q2 iterador do tipo F, política de eliminação de duplicados é compatível ACÇÃO: juntar OP1 e OP2, se OP2 elimina duplicados então OP1 também elimina duplicados Regra 2: COND: OP1 é SELECT, OP2 é SELECT, Q2 iterador do tipo F, política de eliminação de duplicados é compatível ACÇÃO: juntar OP1 e OP2, se OP2 elimina duplicados então OP1 também elimina duplicados

11 Query Graph Model aid nome … alunos … inscricoes aid Q1.aid = Q2.aid Q1(F) Q2( ) Q3(F) Q3.nota >= Q1.media + 3 Q3.cid = TFC T1 OP1: T2 OP2: head.distinct = true body.distinct = preserve head.distinct = true body.distinct = preserve

12 Query Rewrite aid nome … alunos … inscricoes Q1.aid = Q3.aid Q1(F) Q3(F) Q3.nota >= Q1.media + 3 Q3.cid = TFC T1 OP1:

13 Plan Optimization Optimizador escolhe o plano de menor custo para a execução da interrogação anterior Através de uma gramática, as operações de alto nível (caixas do QGM) são convertidas em operações de baixo nível Esta gramática é designada: Grammar of STrategy AlteRnatives (STARs) As operações de baixo nível são designadas por: LOw-LEvel Plan OPerations (LOLEPOPs) Exemplos: ACCESS: converte uma tabela materializada numa cadeia de tuplos GET: aplica uma conjunção de predicados a um conjunto de tuplos (ref. dos pelo seu TID) e projecta as colunas da tabela acedida SORT: ordena uma cadeia de tuplos segundo um ou mais campos JOIN: faz a junção de duas cadeias de tuplos, obedecendo a uma conjunção de predicados

14 Passo 1 – Plano Acesso a Tabelas TableAccess(T,C,P) = TableScan(T,C,P) i I(T) GET(TableScan(i, {TID}, P), T, C, P ),Cond1 TableAccess(T,C,P) = TableScan(T,C,P) i I(T) GET(TableScan(i, {TID}, P), T, C, P ),Cond1 TableScan(T,C,P) = ACCESS(Heap, T, C, P),Armazenamento = Heap ACCESS(B+tree, T, C, P),Armazenamento = B+tree TableScan(T,C,P) = ACCESS(Heap, T, C, P),Armazenamento = Heap ACCESS(B+tree, T, C, P),Armazenamento = B+tree Encontrar métodos eficientes para aceder aos ficheiros; guardar os melhores planos. STARs para acesso aos ficheiros:

15 Passo 1 – Plano Acesso a Tabelas TableAccess Inscricoes {aid, nota} {cid = TFC} Argumentos: Nome da Função Apontadores para definições alternativas Exemplo: relação Inscricoes, assumindo índice B+tree Index1 sobre as colunas :

16 Passo 1 – Plano Acesso a Tabelas TableScan Inscricoes {aid, nota} {cid = TFC} GET Inscricoes {aid, nota} {cid = TFC} TableScan Index1 {TID} {cid = TFC} Exemplo: relação Inscricoes, assumindo índice B+tree Index1 sobre as colunas :

17 Passo 1 – Plano Acesso a Tabelas ACCESS Heap Inscricoes {aid, nota} {cid = TFC} GET Inscricoes {aid, nota} {cid = TFC} ACCESS B+tree Index1 {TID} {cid = TFC} Plano 2: -Ordenação segundo -{cid = TFC} Plano 1: -Tuplos desordenados -{cid = TFC} Exemplo: relação Inscricoes, assumindo índice B+tree Index1 sobre as colunas :

18 Passo 2 – Plano Junção Tabelas NL – nested loops join HA – hash join P – todos os predicados elegíveis JP – predicados da junção IP – predicados só elegíveis para a relação interior (i.e. só referem colunas da relação interior) HP – predicados da junção em forma de igualdade (ex.: T1.x = T2.y ) Glue(T, P) – acede aos tuplos da tabela T, que respeitam os predicados P, usando o planos de menor custo JoinMethod(T1,T2,P) = JOIN(NL, Glue(T1, ), Glue(T2, JP IP), JP, P – (JP IP)) JOIN(HA, Glue(T1, ), Glue(T2, IP), HP, P – IP), HP JoinMethod(T1,T2,P) = JOIN(NL, Glue(T1, ), Glue(T2, JP IP), JP, P – (JP IP)) JOIN(HA, Glue(T1, ), Glue(T2, IP), HP, P – IP), HP Encontrar métodos eficientes para juntar as tabelas

19 Passo 2 – Plano Junção Tabelas JoinMethod Alunos Inscricoes {T1.aid = T2.aid, T2.nota >= T1.media + 3, T2.cid = TFC} Argumentos: Nome da Função Apontadores para definições alternativas

20 Passo 2 – Plano Junção Tabelas JOIN NL Glue(T1, ) Glue(T2, JP IP) JP P – (JP IP) JOIN HA Glue(T1, ) Glue(T2, IP) HP P – IP Join predicates = JP = {T1.aid = T2.aid, T2.nota >= T1.nota + 3} Inner predicates = IP = {T2.cid = TFC} Hashable predicates = HP = {T1.aid = T2.aid} Join predicates = JP = {T1.aid = T2.aid, T2.nota >= T1.nota + 3} Inner predicates = IP = {T2.cid = TFC} Hashable predicates = HP = {T1.aid = T2.aid}

21 Passo 2 – Plano Junção Tabelas JOIN NL JP P – (JP IP) = Exemplo: geração do plano para o algoritmo nested loops Glue Alunos Glue Inscricoes JP IP Join predicates = JP = {T1.aid = T2.aid, T2.nota >= T1.nota + 3} Inner predicates = IP = {T2.cid = TFC} Join predicates = JP = {T1.aid = T2.aid, T2.nota >= T1.nota + 3} Inner predicates = IP = {T2.cid = TFC}

22 Passo 2 – Plano Junção Tabelas JOIN NL JP ACCESS Heap Alunos {aid, nome, media} GET Inscricoes {aid, nota} JP IP ACCESS B+tree Index1 {TID} JP IP Exemplo: geração do plano para o algoritmo nested loops Index Nested Loop Join: para cada tuplo Ta da tabela Alunos pesquisar no índice dos tuplos Ti da tabela Inscricoes aqueles cujo aid coincide: Ta.aid = Ti.aid se Ti.cid = TFC e Ti.nota >= Ta.media + 3, adicionar tuplo ao resultado Custo = b alunos + n alunos * c index1

23 Passo 2 – Plano Junção Tabelas JOIN HA HP P – IP ACCESS Heap Alunos {aid, nome, media} ACCESS Heap Inscricoes {aid, nota} IP Exemplo: geração do plano para o algoritmo hash join Hash Join: particionar Alunos e Inscricoes com uma função de hash h sobre os atributos hashable da junção: HP = {T1.aid = T2.aid} construir um índice em memória para a relação mais pequena tuplos que satisfaçam a condição Ta.aid = Ti.aid, Ti.cid = TFC e Ti.nota >= Ta.media + 3 adicionar ao resulado Custo = 3 * (b alunos + b inscricoes )

24 Bibliografia [SCFL+86] - P. Schwarz, W. Chang, J. C. Freytag, G. Lohman, Extensibility in the Starburst Database System, IBM Almaden Research Center, 1986 [HFLP89] - L. Haas, J. Freytag, G. Lohman, H. Pirahesh, Extensible Query Processing in Starburst, IBM Almaden Research Center, 1989 [LFL88] – M. Lee, J. Freytag, G. Lohman, Implementing an Interpreter for Functional Rules in a Query Optimizer, IBM Almaden Research Center, 1988 [PHH92] – H. Pirahesh, J. Hellerstein, W. Hasany, Extensible/Rule Based Query Rewrite Optimization in Starburst, IBM Almaden Research Center, 1992 [Loh88] – G. Lohman, Grammar-like Functional Rules for Representing Query Optimization Alternatives, IBM Almaden Research Center, 1988 [SKS06] - Silberschatz, Korth, Sudarshan, Database System Concepts, Cap. 2 e 13, McGraw-Hill, 5 th edition, 2006 [RG03] – R. Ramakrishnan, J. Gehrke, Database Management Systems, Cap. 4, McGraw-Hill, 3 rd edition, 2003 [Ives05] – Z. Ives, Query Optimization Strategies, University of Pennsylvania, 2005, [PHH92] – H. Pirahesh, J. Hellerstein, W. Hasan, Extensible/Rule Based Query Rewrite Optimization in Starburst, SIGMOD Conference, 1992, [WikiHash] – Wikipedia, Hash Function,


Carregar ppt "Starburst Optimização de Interrogações Francisco Santos."

Apresentações semelhantes


Anúncios Google