Baixe o app para aproveitar ainda mais
Prévia do material em texto
IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 10 - Otimização IMPLEMENTAÇÃO DE BANCO DE DADOS Conteúdo Programático desta aula Aprender a criar Visões, Indices e Sequences TRANSAÇÕES IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS FASES DE EXECUÇÃO DE COMANDO TRANSAÇÕES IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS Analise Sintática IMPLEMENTAÇÃO DE BANCO DE DADOS Analisador Sintático IMPLEMENTAÇÃO DE BANCO DE DADOS Analise Semântica IMPLEMENTAÇÃO DE BANCO DE DADOS Fluxo de Processamento IMPLEMENTAÇÃO DE BANCO DE DADOS Geração de Plano Lógico IMPLEMENTAÇÃO DE BANCO DE DADOS Geração de Plano Lógico IMPLEMENTAÇÃO DE BANCO DE DADOS Geração de Plano Lógico IMPLEMENTAÇÃO DE BANCO DE DADOS Geração de Plano Lógico IMPLEMENTAÇÃO DE BANCO DE DADOS Geração de Plano Lógico IMPLEMENTAÇÃO DE BANCO DE DADOS Geração de Plano Lógico IMPLEMENTAÇÃO DE BANCO DE DADOS Geração de Plano Lógico IMPLEMENTAÇÃO DE BANCO DE DADOS Geração de Plano Lógico IMPLEMENTAÇÃO DE BANCO DE DADOS Geração de Plano Lógico IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização de Consultas IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização de Consultas IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização Heurística IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização Heurística IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização Heurísticas IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização Heurística IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização Heurística IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização Heurística IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização Heurística IMPLEMENTAÇÃO DE BANCO DE DADOS Avaliação de Custos IMPLEMENTAÇÃO DE BANCO DE DADOS Componentes de Custos IMPLEMENTAÇÃO DE BANCO DE DADOS Componentes de Custos IMPLEMENTAÇÃO DE BANCO DE DADOS Otimizador de consultas • Abordagens clássicas: – Otimização por regras: Plano de execução é gerado ao se aplicar heurísticas tidas como eficientes (independente de estatísticas). Por exemplo, o otimizador poderia sempre escolher utilizar um índice que esteja disponível sobre uma coluna. – Otimização por custo: Determina que plano de execução é o mais eficiente ao considerar diferentes “caminhos de acesso” usando as estatísticas sobre os objetos do esquema (tabelas e índices) acessados pelo comando SQL (mais eficiente e recomendado) A otimização por custo demanda estatísticas IMPLEMENTAÇÃO DE BANCO DE DADOS Planos de Execução O plano de execução é o roteiro que o SGBD segue para recuperar as linhas especificadas pela consulta. Uma série de detalhes sobre como a consulta deve ser processada é especificada no plano. Em especial, quais operações serão aplicadas para resolver a consulta e em que ordem elas serão processadas. • O que é especificado no plano de execução: – Ordem de acesso às tabelas – Ordem de operações de seleção, projeção e junção – Índices utilizados – Tipos de junção – Ordenações – Tabelas intermediárias • Existem dois tipos básicos de operação: – Métodos de acesso (varreduras seqüenciais e indexadas) – Outras operações (junções, uniões, ordenação, etc...) IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização baseada em custo IMPLEMENTAÇÃO DE BANCO DE DADOS Query Transformer: Transforma uma consulta SQL em uma expressão algébrica. Estimator Fator de seletividade Cardinalidade Custo (CPU + E/S + comunicação) Plan Generator: Gera um conjunto de planos equivalentes, porém com custos diferentes Ordem de junção Ordem dos operadores Algoritmos de junção (sort-merge, nested loops, hash join ) Otimização baseada em custo IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização baseada em custo Principais caminhos de acesso TABLE ACCESS (bom para baixa seletividade) FULL SCAN BY ROW ID INDEX SCAN (bom para baixa seletividade) Unique Range Full Hash join JOIN Nested-Loop Sort-Merge Hash Join (não disponível em otimização baseada em regra) IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização baseada em regra Usa praticamente os mesmos caminhos de acesso da otimização baseada em custo Não contém HASH JOIN Utiliza heurísticas para gerar os planos de execução Regras de comutatividade e associatividade (A U C) JOIN (B U C) (A JOIN B) U C Junção de seleção Seleção de junção Seleção e projeção são antecipadas sobre a junção Busca por índices são preferidas etc. IMPLEMENTAÇÃO DE BANCO DE DADOS Varredura Seqüencial IMPLEMENTAÇÃO DE BANCO DE DADOS Varredura Indexada IMPLEMENTAÇÃO DE BANCO DE DADOS Varredura Indexada IMPLEMENTAÇÃO DE BANCO DE DADOS Varredura Indexada IMPLEMENTAÇÃO DE BANCO DE DADOS Ordenação (Sorting) • Operação básica para diversas outras operações físicas • Resolve a cláusula ORDER BY • Se o conjunto a ser ordenado não cabe em memória, esta operação pode ser muito cara • Pode ser utilizada em DISTINCT, UNION, INTERSECTION, JOIN… IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização baseada em custo Exemplos SELECT * FROM EMP WHERE Name = ‘Jackson’ TABLE ACCESS FULL SCAN SELECT * FROM EMP WHERE Empno = 7369 TABLE ACCESS BY INDEX ROW ID INDEX UNIQUE SCAN (PK_EMP) IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização baseada em custo Exemplos SELECT * FROM PROJECT WHERE PNAME LIKE 'Contas%' TABLE ACCESS BY INDEX ROW ID INDEX RANGE SCAN (SYS_C01) SELECT * FROM PROJECT WHERE PNAME LIKE ‘%Contas' TABLE ACCESS FULL SCAN IMPLEMENTAÇÃO DE BANCO DE DADOS Junções • Os algoritmos clássicos utilizados em junções são: – Loops Aninhados (Nested Loops Join) – Ordenação/Intercalação (Merge Join) – Hashing (Hash Join) IMPLEMENTAÇÃO DE BANCO DE DADOS Nested Loops IMPLEMENTAÇÃO DE BANCO DE DADOS Nested Loops IMPLEMENTAÇÃO DE BANCO DE DADOS Nested Loops IMPLEMENTAÇÃO DE BANCO DE DADOS Nested-Loops SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS Merge Join SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS Hash Join SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização baseada em custo Exemplos SELECT W.* FROM EMPLOYEE E, WORKS_ON W WHERE E.SSN = W.ESSN AND E.SALARY > 800 NESTED LOOPS TABLE ACCESS FULL (WORKS_ON) TABLE ACESS BY INDEX ROWID INDEX UNIQUE SCAN (SYS_C01) IMPLEMENTAÇÃO DE BANCO DE DADOS Otimização baseada em custo Exemplos SELECT W.* FROM WORKS_ON W, EMPLOYEE E WHERE E.SSN = W.ESSN AND E.SALARY > 800 NESTED LOOPS TABLE ACCESS FULL SCAN (EMPLOYEE) INDEX RANGE SCAN (SYS_C012) /* – Chave primária de WORKS_ON IMPLEMENTAÇÃO DE BANCO DE DADOS ORACLE - REGRAS Rank Caminho de Acesso 1 SinglerowbyROWID 2 Single row by cluster join 3 Single row by hash cluster key with unique or primary key 4 Single row by unique or primary key 5 Clusterjoin 6 Hashclusterkey 7 Indexedclusterkey 8 Compositeindex 9 Single-columnindex 10 Bounded range search on indexed columns 11 Unbounded range search on indexed columns 12 Sort-mergejoin 13 MAX or MIN of indexed column 14 ORDER BY on indexed column 15 Fulltablescan 55 IMPLEMENTAÇÃO DE BANCO DE DADOS ORACLE – COMPUTANDO ESTATÍSTICAS 56 IMPLEMENTAÇÃO DE BANCO DE DADOS ORACLE – ACESSO AO PLANO DE EXECUÇÃO 57 IMPLEMENTAÇÃO DE BANCO DE DADOS Próxima Aula Revisão para AV2 TRANSAÇÕES IMPLEMENTAÇÃO DE BANCO DE DADOS IMPLEMENTAÇÃO DE BANCO DE DADOS
Compartilhar