Otimização de Consultas em Data Warehouse (DW)

Slides:



Advertisements
Apresentações semelhantes
O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Advertisements

Object Query Language - OQL
Banco de Dados Prof. Antonio.
Banco de Dados I Aula 20.
SQL Avançado Continuação
SQL Structured Query Language (continuação)
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados I 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Data Warehouse Tuning O que é um Data Warehouse? Índices Bitmap
Visões Marilde Santos.
SQL Structured Query Language Juliano Brito da Justa Neves PESCD – Programa de Estágio Supervisionado de Capacitação Docente.
FACULDADE DOS GUARARAPES
SGBD.
OLAP – Motivação e conceitos
Sistema Gerenciador de Banco de Dados SGBD
AULA 23 Profa. Sandra de Amo GBC053 – BCC
Daniel J. Abadi – Yale - New Haven, USA Samuel R. Madden – MIT – Cambrigde, USA Nabil Hachem – Avantgarde Consulting – Shrewbury, USA SIGMOD '08 Apresentado.
Hierarquia de Visões de Objeto
SQL – Noções Gerais Por Márcia Jacyntha N. Rodrigues Lucena
Operadores Especiais da SQL
Introdução à Engenharia da Computação
Oficina sobre banco de dados
SCC Bancos de Dados e Suas Aplicações
Material III-Bimestre Wagner Santos C. de Jesus
Linguagem de Banco de Dados - SQL
MySQL Gerdson de Araújo Silva Universidade Federal de Alagoas Maceió-AL, 21 de maio de 2009.
Banco de dados Profª Kelly Medeiros.
Query Tuning Lílian Simão Oliveira.
Banco de Dados Avançado - Prof.ª Valeria Times
Monitoria GDI Aula Prática
Monitoria GDI Aula Prática
BANCO DE DADOS UNIVERSIDADE ESTADUAL DE SANTA CRUZ
Otimizador de consultas
Design Patterns / Acesso ao banco de dados (java.sql)
Tuning Lílian Simão Oliveira.
Banco de Dados Avançado
Oracle 9i: SQL e PL/SQL Bruno Celso Cunha de Freitas
III – Oracle10g Apontadores – Tipo de Dado (REF).
Desenvolvendo um script SQL
Treinamento sobre SQL.
VIEW - VISÕES Professor Esp. Diego André Sant’Ana
Banco de dados.
Baseado no material do Professor Raul Paradeda
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Spatial Data Warehouse Por: Camilo Porto. Apresentação  Revisando esquema estrela... limitações  Spatial Data Warehouse (SDW) Um modelo conceitual Estendendo.
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Uma proposta para OLAP ontológica Adriana Ribeiro.
SQL Server Comando PIVOT.
Aula 17 – Otimização Modelo Relacional
1 Helton Santa Cruz Ferramentas CASE de Projeto de BD Multidimensional.
Linguagem SQL Prof. Juliano.
Banco de Dados II Prof. Dra. Carla Lanzotti
III - Oracle9i Apontadores – Tipo de Dado (REF). Identificador de Objeto A todo objeto de uma “object table” é associado um OID (“Object IDentifier”)
Equipe de monitoria Aula prática 4.  Tipos  Tabela de Objetos  Herança  Métodos  Referências  Coleções  Composição de coleções  Conectividade.
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
AOBD 07/08 Mini-Projecto 2 Soluções. 1) Considere que existem três relações R1=(A,B,C), R2=(C,D) e R3=(D,E) com chaves primárias A, C e D, respectivamente.
Daniel Paulo Introdução Neste capítulo trataremos a relação entre tabelas e FILEGROUPS, bem como a alocação interna de dados.
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
Daniel Paulo Introdução Informações de uma tabela ou view podem ser encontradas de maneira mais rápida através da utilização.
BANCO DE DADOS MULTIDIMENSIONAIS CONSULTANDO O CUBO DE DADOS (MDX – SQL SERVER 2008) Banco de Dados Avançado - Prof.ª Valeria Times Andresson Firmino.
Modelagem Dimensional do Data Warehouse
UCSal – Bacharelado em Informática
Janeiro/2013 Ceça Moraes Data Warehouse Janeiro/2013 Ceça Moraes
Linguagem de definição de dados - SQL
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
INTELIGÊNCIA EMPRESARIAL Aula 9 - Modelagem de Data Warehouse.
1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.
José Antônio da Cunha CEFET - RN José Antônio -
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
Prática de Banco de Dados Créditos: Prof. Jefferson Silva Adaptações: Prof. Nécio de Lima Veras.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Transcrição da apresentação:

Otimização de Consultas em Data Warehouse (DW) Universidade Federal de Campina Grande Mestrado em Ciência da Computação Disciplina Banco de Dados Multidimensionais Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo http://claudiocampelo.com Campina Grande – PB , Setembro de 2006

Roteiro Motivação; Background; Materialized Views; Query ReWrite; Aproximações;

Motivação Grande quantidade de dados; Urgência da Informação; Informações de nível gerencial – agregações; Tempo de Resposta Aceitável: Cinco Segundos!

Background Modelo Star (Estrela): existe uma tabela dominante no centro, chamada tabela de fatos, com múltiplas junções conectando-a a outras tabelas, sendo estas chamadas de tabelas de dimensão. Modelo Snow Flake (Floco de Neve): consiste em uma extensão do modelo Estrela onde cada uma das "pontas da estrela" passa a ser o centro de outras estrelas. Não aconselhável; Desnormalização (~3FN);

Background OLTP X OLAP

Background Índices BITMAP Um vetor de bits por valor de atributo; O tamanho do BITMAP é o número de registros da relação indexada; Por exemplo, dia da semana teria 7 vetores; Podemos associar cada bit a faixas de valores, por exemplo 0 to 20.000 reais, 20.000,01 a 35.000 reais;

Background Índices BITMAP Vantagem: Maior facilidade para manipulação interna de vários BITMAPs para responder uma consulta; Eficiente em Queries com muitos predicados; Comando CREATE BITMAP INDEX

Background Query com Índices BITMAP

Materialized Views (MV) Pode contar agregações e junções; O otimizador decide se usa a MV; Alterações nas consultas são transparentes ao usuário/desenvolvedor -Não é necessário alterar a consulta SQL ou mesmo a aplicação; Aplicações e ferramentas de query ad hoc podem se beneficiar.

Materialized Views (MV) Interessante quando a quantidade de dados é bem maior que o resultado; Pode ser útil também quando envolve junções e projeções custosas!

Materialized Views (MV) Quais visões criar para ajudar o otimizador ? Como prover atualizações eficientes nas MV se os dados base mudam? Dica: Na dúvida se seria necessário, o SQL Access Advisor (Oracle 10g) pode ajudar fazendo uma análise a partir da carga de trabalho (workload);

Query ReWrite Vários tipos possíveis; A mais óbvia e simples: Quando os textos são iguais; É necessário aproveitar a mesma MV para várias consultas! Dica: O Explain Plan ajuda a descobrir, através do plano de execução da consulta, os meios de acesso que o Oracle está utilizando para acessar as tabelas do banco de dados. A seguir, mostraremos o resultado exibido pelo Explain Plan, para todas as consultas exibidas como exemplo.

Query ReWrite Transparência:

Nosso Exemplo Esquema em estrela:

Agregate Computation Exemplo 1: MV que computa a soma e o total dos preços das compras por mês, por produto; Observar a cláusula ENABLE QUERY REWRITE;

Agregate Computation Exemplo 1: CREATE MATERIALIZED VIEW monthly_sales_mv ENABLE QUERY REWRITE AS SELECT t.month, p.product_id, SUM(ps.purchase_price) as sum_of_sales, COUNT (ps.purchase_price) as total_sales FROM time t, product p, purchases ps WHERE t.time_key = ps.time_key AND ps.product_id = p.product_id GROUP BY t.month, p.product_id;uto; Observar a cláusula ENABLE QUERY REWRITE;

Agregate Computation Exemplo 2: Computa a média dos preços das compras por mês, por produto; SELECT t.month, p.product_id, AVG(ps.purchase_price) as avg_sales FROM time t, product p, purchases ps WHERE t.time_key = ps.time_key AND ps.product_id = p.product_id GROUP BY t.month, p.product_id;

Agregate Computation O otimizador pode utilizar a MV monthly_sales_mv para calcular o AVG ! Explain Plan do Ex. 2:

JoinBack Exemplo 3: Total de compras por mês, por categoria do produto SELECT t.month, p.category, SUM(ps.purchase_price) as sum_of_sales FROM time t, product p, purchases ps WHERE t.time_key = ps.time_key AND ps.product_id = p.product_id GROUP BY t.month, p.category;

JoinBack A categoria não está na MV; A coluna product_id, chave primária de PRODUCT, está na MV; O otimizador faz a Junção da MV com PRODUTO para obter a categoria; Explain Plan do Ex. 3:

Query ReWrite Usando Dimensão Um DW típico que possui hierarquias nas dimensões; Por exemplo, dia → mês → ano… Oracle permite criar objetos dimensões com o comando CREATE DIMENSION; Este objeto não consome espaço além dos metadados; Oracle assume que o DBA sabe o que está fazendo!

Query ReWrite Usando Dimensão Exemplo de Dimensão Oracle: CREATE DIMENSION time_dim LEVEL time_key IS time.time_key LEVEL month IS time.month LEVEL quarter IS time.quarter LEVEL year IS time.year HIERARCHY calendar_rollup ( time_key CHILD OF month CHILD OF quarter CHILD OF year ) ATTRIBUTE time_key determines (day_of_week, holiday) ATTRIBUTE month determines (month_name);

Query ReWrite Usando Dimensão Exemplo 4: Compras por ano SELECT t.year, p.category, SUM(ps.purchase_price) as sum_of_sales FROM time t, product p, purchases ps WHERE t.time_key = ps.time_key AND ps.product_id = p.product_id GROUP BY t.year, p.category;

Query ReWrite Usando Dimensão O otimizador pode utilizar a MV monthly_sales_mv, uma vez que possui informações sobre a hierarquia; Utiliza ainda a técnica anterior (JoinBack) para obter os valores da coluna year a partir de month na MV; Explain Plan do Ex. 4: Dica: Se o resultado do ReWrite não for o esperado, use a procedure DBMS_MVIEW .EXPLAIN_REWRITE (a partir do Oracle 9i) para ajudar a diagnosticar o problema

Query ReWrite Usando Dimensão A cláusula ATTRIBUTE determina uma ralação um-para-um; É possível determinar day_of_week a partir de time_key.; Por exemplo (ver Exemplo 5), calculamos a soma das compras para "January" em cada ano. Ainda é possível usar a MV monthly_sales_mv !

Query ReWrite Usando Dimensão Exemplo 5: SELECT t.year, p.category, SUM(ps.purchase_price) as sum_of_sales FROM time t, product p, purchases ps WHERE t.time_key = ps.time_key AND ps.product_id = p.product_id AND t.month_name = 'January‘ Note que no WHERE há atributos que não estão na MV!

Query ReWrite Usando Dimensão Explain Plan do Ex. 5:

Filtered Data Até agora, vimos exemplos contendo uma MV com todos os dados da tabela PURCHASE; A partir do Oracle 9i, é possível utilizar reescrever a consulta a partir de uma MV contendo apenas um sobconjunto dos dados!

Filtered Data Nossa MV do Exemplo 1 foi modificada para conter apenas os dados de 1997 a 2002: CREATE MATERIALIZED VIEW five_yr_monthly_sales_mv ENABLE QUERY REWRITE AS SELECT t.month, p.product_id, SUM(ps.purchase_price) as sum_of_sales, COUNT (ps.purchase_price) as total_sales FROM time t, product p, purchases ps WHERE t.time_key = ps.time_key AND ps.product_id = p.product_id AND t.year between 1997 and 2002 GROUP BY t.month, p.product_id;

Filtered Data Agora, o otimizador utiliza esta nova MV caso a consulta seja referente a dados nesse subconjunto, por exemplo a consulta do Exemplo 6 (soma das compras em 2000): SELECT t.month, p.product_id, SUM(ps.purchase_price) as sum_of_sales FROM time t, product p, purchases ps WHERE t.time_key = ps.time_key AND ps.product_id = p.product_id AND t.year = 2000 GROUP BY t.month, p.product_id;

Filtered Data No Oracle 9i, se a condição da consulta não está na MV, ela não é utilizada; No 10g, ele fornece uma solução híbrida; Na consulta do Exemplo 7, deseja-se compras mensais de 2000 a 2003; Neste exemplo, o Oracle 10g usa a MV para os dados de 2000 a 2002;

Filtered Data Explain Plan do Ex. 6:

Filtered Data Exemplo 7: Compras mensais de 2000 a 2003 SELECT t.month, p.product_id, SUM(ps.purchase_price) as sum_of_sales FROM time t, product p, purchases ps WHERE t.time_key = ps.time_key AND ps.product_id = p.product_id AND t.year BETWEEN 2000 and 2003

Filtered Data Explain Plan do Ex. 7:

Stale Materialized Views O que acontece quando a tabela base é alterada? A Query ReWrite continua usando a MV? Depende do parâmetro QUERY_REWRITE_INTEGRITY

Stale Materialized Views Valores possíveis para QUERY_REWRITE_INTEGRITY: STALE_TOLERATED: Usa a MV mesmo quando a tabela base é alterada; TRUSTED: Assume que a MV fornecida não é “Staled”. Usado também para declarações em dimensões e constraints; ENFORCED (Default): Garante os mesmos resultados sempre, ou seja, não usa MV “Staled” ou Relacionamentos TRUSTED;

Partition Change Tracking Oracle9i introduziu o Partition Change Tracking (PCT); Sabe-se qual parte da MV corrsponde a parte alterada da tabela base; MV pode continua sendo usada para outras partes!

Partition Change Tracking Exemplo 8: Nossa MV foi alterada, adicionando DBMS_MVIEW.PMARKER CREATE MATERIALIZED VIEW monthly_sales_pct_mv ENABLE QUERY REWRITE AS SELECT DBMS_MVIEW.PMARKER(ps.rowid) pm, t.month, p.product_id, SUM(ps.purchase_price) as sum_of_sales, COUNT (ps.purchase_price) as total_sales FROM time t, product p, purchases ps WHERE t.time_key = ps.time_key AND ps.product_id = p.product_id GROUP BY DBMS_MVIEW.PMARKER(ps.rowid), t.month, p.product_id;

Partition Change Tracking Com a tabela PURCHASES particionada pelo time_key, ao adicionar uma nova partição para Abril de 2003, não afetará a consulta do Exemplo 9 (para março de 2002): SELECT t.month, p.product_id, SUM(ps.purchase_price) FROM time t, product p, purchases ps WHERE t.time_key = ps.time_key AND ps.product_id = p.product_id AND ps.time_key >= TO_DATE('01-03-2002', 'DD-MM-YYYY') AND ps.time_key < TO_DATE('01-04-2002', 'DD-MM-YYYY') GROUP BY t.month, p.product_id; Oracle 10g adiciona soluções híbridas para esta abordagem!

Partition Change Tracking Explain Plan do Ex. 9:

Query Rewrite com várias MVs Soluções híbridas do Oracle fazem uso não apenas de MV + Tabela Base, mas também de várias MV; Exemplo: Suponha que temos diversas MVs monthly_sales_1990-1994, monthly_sales_1995_to_2000, monthly_sales_2001_to_2005, etc.

Query Rewrite com várias MVs Exemplo 10: Usa-se as 3 MVs SELECT t.month, p.product_id, SUM(ps.purchase_price) as sum_of_sales, FROM time t, product p, purchases ps WHERE t.time_key = ps.time_key AND ps.product_id = p.product_id AND t.year between 1993 and 2003 GROUP BY t.month, p.product_id;

Query Rewrite com várias MVs Explain Plan do Ex. 10:

Query Rewrite com várias MVs Exemplo 11: Usa-se monthly_sales_1990_to_1994 e monthly_sales_1995_to_2000 e obt’’em os dados de 1989 a partir da tabela base SELECT t.month, p.product_id, SUM(ps.purchase_price) as sum_of_sales FROM time t, product p, purchases ps WHERE t.time_key = ps.time_key AND ps.product_id = p.product_id AND t.year between 1989 and 1999 GROUP BY t.month, p.product_id;

Query Rewrite com várias MVs Explain Plan do Ex. 11:

Aproximações Utilização de amostras estatísticas dos dados; Técnicas de aproximação podem promover resultados interessantes; Atributos cuja adição de novos valores não alteram os agregados (Média Salarial);

Aproximações Suponha R sendo uma tabela de fatos e as demais de dimensão; Colhendo uma amostra R_ de R e então fazendo joins baseados em R_ -> S _, T _; Se a consulta envolve R, S, T então a query pode retornar bons resultados utilizando R _, S _, T _.

Aproximações

Aproximações

Aproximações

Conclusões Muitas possibilidades de melhorias; Responsabilidades ao DBA! Ferramentas são esseciais; Novas versões do Oracle têm adicionado melhorias consideráveis;

Bibliografia Consultada Oracle 9i Data Warehousing Guide. Junho/2005. Oracle OLAP Application Developer's Guide 10g Release 2. Agosto/2005. Oracle Database Performance Tuning Guide 10g Release 2. Junho/2005. Hillson, Susan et Al. Improve Results with Query Rewrite. Oracle Magazine Setembro/Outubro, 2003. Shasha, Dennis e Bonnet, Philippe. Data Warehouse Tuning: What’s Different About Data Warehouses. Dbazine, Abril/2005. A partir de Database Tuning: Principles, Experiments, and Troubleshooting Techniques, Morgan Kaufmann Publishers, 2003.