otimização de consultas em data warehouse (dw) cláudio e. c. campelo universidade federal de...
TRANSCRIPT
![Page 1: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/1.jpg)
Otimização de Consultas em Data Warehouse (DW)
Cláudio E. C. Campelohttp://claudiocampelo.com
Universidade Federal de Campina GrandeMestrado em Ciência da Computação
Disciplina Banco de Dados Multidimensionais
Campina Grande – PB , Setembro de 2006
![Page 2: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/2.jpg)
Roteiro
• Motivação;
• Background;
• Materialized Views;
• Query ReWrite;
• Aproximações;
![Page 3: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/3.jpg)
Motivação
• Tempo de Resposta Aceitável:
Cinco Segundos!
• Grande quantidade de dados;• Urgência da Informação;• Informações de nível gerencial –
agregações;
![Page 4: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/4.jpg)
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);
![Page 5: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/5.jpg)
Background
• OLTP X OLAP
![Page 6: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/6.jpg)
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;
![Page 7: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/7.jpg)
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
![Page 8: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/8.jpg)
Background
• Query com Índices BITMAP
![Page 9: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/9.jpg)
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.
![Page 10: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/10.jpg)
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!
![Page 11: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/11.jpg)
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);
![Page 12: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/12.jpg)
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.
![Page 13: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/13.jpg)
Query ReWrite
• Transparência:
![Page 14: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/14.jpg)
Nosso Exemplo
• Esquema em estrela:
![Page 15: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/15.jpg)
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;
![Page 16: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/16.jpg)
Agregate Computation
• Exemplo 1:
CREATE MATERIALIZED VIEW monthly_sales_mvENABLE QUERY REWRITEASSELECT 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_idGROUP BY t.month, p.product_id;uto;Observar a cláusula ENABLE QUERY REWRITE;
![Page 17: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/17.jpg)
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;
![Page 18: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/18.jpg)
Agregate Computation
• O otimizador pode utilizar a MV monthly_sales_mv para calcular o AVG !
• Explain Plan do Ex. 2:
![Page 19: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/19.jpg)
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;
![Page 20: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/20.jpg)
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:
![Page 21: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/21.jpg)
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!
![Page 22: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/22.jpg)
Query ReWrite Usando Dimensão
• Exemplo de Dimensão Oracle:
CREATE DIMENSION time_dimLEVEL time_key IS time.time_keyLEVEL month IS time.monthLEVEL quarter IS time.quarterLEVEL year IS time.yearHIERARCHY 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);
![Page 23: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/23.jpg)
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;
![Page 24: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/24.jpg)
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 Plando 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
![Page 25: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/25.jpg)
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 !
![Page 26: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/26.jpg)
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!
![Page 27: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/27.jpg)
Query ReWrite Usando Dimensão
• Explain Plan do Ex. 5:
![Page 28: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/28.jpg)
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!
![Page 29: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/29.jpg)
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_mvENABLE QUERY REWRITE
ASSELECT t.month, p.product_id, SUM(ps.purchase_price) as sum_of_sales, COUNT (ps.purchase_price) as total_salesFROM time t, product p, purchases psWHERE t.time_key = ps.time_key AND ps.product_id = p.product_id AND t.year between 1997 and 2002GROUP BY t.month, p.product_id;
![Page 30: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/30.jpg)
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;
![Page 31: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/31.jpg)
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;
![Page 32: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/32.jpg)
Filtered Data
• Explain Plan do Ex. 6:
![Page 33: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/33.jpg)
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
![Page 34: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/34.jpg)
Filtered Data
• Explain Plan do Ex. 7:
![Page 35: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/35.jpg)
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
![Page 36: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/36.jpg)
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;
![Page 37: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/37.jpg)
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!
![Page 38: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/38.jpg)
Partition Change Tracking
• Exemplo 8: Nossa MV foi alterada, adicionando DBMS_MVIEW.PMARKER
CREATE MATERIALIZED VIEW monthly_sales_pct_mvENABLE QUERY REWRITEASSELECT 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_salesFROM time t, product p, purchases psWHERE t.time_key = ps.time_key AND ps.product_id = p.product_idGROUP BY DBMS_MVIEW.PMARKER(ps.rowid), t.month, p.product_id;
![Page 39: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/39.jpg)
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 psWHERE 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!
![Page 40: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/40.jpg)
Partition Change Tracking
• Explain Plan do Ex. 9:
![Page 41: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/41.jpg)
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.
![Page 42: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/42.jpg)
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 psWHERE t.time_key = ps.time_key AND ps.product_id = p.product_id AND t.year between 1993 and 2003GROUP BY t.month, p.product_id;
![Page 43: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/43.jpg)
Query Rewrite com várias MVs
• Explain Plan do Ex. 10:
![Page 44: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/44.jpg)
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 psWHERE t.time_key = ps.time_key AND ps.product_id = p.product_id AND t.year between 1989 and 1999GROUP BY t.month, p.product_id;
![Page 45: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/45.jpg)
Query Rewrite com várias MVs
• Explain Plan do Ex. 11:
![Page 46: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/46.jpg)
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);
![Page 47: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/47.jpg)
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 _.
![Page 48: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/48.jpg)
Aproximações
![Page 49: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/49.jpg)
Aproximações
![Page 50: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/50.jpg)
Aproximações
![Page 51: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/51.jpg)
Conclusões
• Muitas possibilidades de melhorias;
• Responsabilidades ao DBA!
• Ferramentas são esseciais;
• Novas versões do Oracle têm adicionado melhorias consideráveis;
![Page 52: Otimização de Consultas em Data Warehouse (DW) Cláudio E. C. Campelo Universidade Federal de Campina Grande Mestrado em Ciência](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc10c497959413d8c344b/html5/thumbnails/52.jpg)
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.