1 / 24

Starburst

Starburst. Optimização de Interrogações. Francisco Santos. Agenda. Introdução Objectivo do Starburst Processamento Interrogações Query Graph Model Reescrita de Interrogações Optimização do Plano Bibliografia. Introdução. O que é a optimização de interrogações?

natane
Télécharger la présentation

Starburst

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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.nomeFROM alunos Q1WHERE Q1.aid IN ( SELECT Q3.aidFROM inscricoes Q3WHERE Q3.nota >= Q1.media + 3AND Q3.cid = ‘TFC’ )

  8. Qi’s – iteradores, representam acessos a tabelas: Setformers (F) – podem aparecer no resultado final Quantifiers (, ) – usados para eliminar tuplos do resultado final p1 Conjunção de Predicados: p1  p2  …  pn … pn Tabelas: Materializadas – existe na BD Derivadas – gerada a partir de uma operação (interrogação) Der. Mat. Query Graph Model Construtores para o Query Graph Model (QGM):

  9. aid nome aid … … alunos inscricoes Query Graph Model T1OP1: Q1(F) Q2() Q1.aid = Q2.aid T2OP2: Q3(F) Q3.cid = ‘TFC’ Q3.nota >= Q1.media + 3

  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 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. aid nome aid … … alunos inscricoes Query Graph Model T1OP1: head.distinct = true body.distinct = preserve Q1(F) Q2() Q1.aid = Q2.aid T2OP2: head.distinct = true body.distinct = preserve Q3(F) Q3.cid = ‘TFC’ Q3.nota >= Q1.media + 3

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

  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. 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’ Passo 1 – Plano Acesso a Tabelas Encontrar métodos eficientes para aceder aos ficheiros; guardar os melhores planos. STARs para acesso aos ficheiros:

  15. Passo 1 – Plano Acesso a Tabelas Exemplo: relação ‘Inscricoes’, assumindo índice B+tree ‘Index1’ sobre as colunas ‘<aid,cid>’: Apontadores para definições alternativas Nome da Função Argumentos:

  16. Passo 1 – Plano Acesso a Tabelas Exemplo: relação ‘Inscricoes’, assumindo índice B+tree ‘Index1’ sobre as colunas ‘<aid,cid>’:

  17. Passo 1 – Plano Acesso a Tabelas Exemplo: relação ‘Inscricoes’, assumindo índice B+tree ‘Index1’ sobre as colunas ‘<aid,cid>’: • Plano 2: • Ordenação segundo ‘<aid,cid>’ • {cid = ‘TFC’} • Plano 1: • Tuplos desordenados • {cid = ‘TFC’}

  18. 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   Passo 2 – Plano Junção Tabelas Encontrar métodos eficientes para juntar as 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

  19. Passo 2 – Plano Junção Tabelas Apontadores para definições alternativas Nome da Função Argumentos:

  20. Passo 2 – Plano Junção Tabelas 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 Exemplo: geração do plano para o algoritmo nested loops Join predicates = JP = {T1.aid = T2.aid, T2.nota >= T1.nota + 3} Inner predicates = IP = {T2.cid = ‘TFC’}

  22. 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 <Ta.aid, Ta.nome> ao resultado • Custo = balunos + nalunos * cindex1 Passo 2 – Plano Junção Tabelas Exemplo: geração do plano para o algoritmo nested loops

  23. 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 * (balunos + binscricoes ) Passo 2 – Plano Junção Tabelas Exemplo: geração do plano para o algoritmo hash join

  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, 5th edition, 2006 • [RG03] – R. Ramakrishnan, J. Gehrke, “Database Management Systems”, Cap. 4, McGraw-Hill, 3rd edition, 2003 • [Ives05] – Z. Ives, “Query Optimization Strategies”, University of Pennsylvania, 2005, www.seas.upenn.edu/~zives/cis650/slides/6-query-opt.ppt • [PHH92] – H. Pirahesh, J. Hellerstein, W. Hasan, “Extensible/Rule Based Query Rewrite Optimization in Starburst”, SIGMOD Conference, 1992, www.mcs.vuw.ac.nz/~db/publications/comp443Prest.ppt • [WikiHash] – Wikipedia, “Hash Function”, http://en.wikipedia.org/wiki/Hash_function

More Related