Fazendo previsões

Estimando tamanhos.

Caro amigo, leitor, seguidor, muito bom dia, boa tarde, boa noite!
Primeiro, antes de falar qualquer coisa, gostaria de dizer que hoje é um dia muito especial pra mim.
Hoje é o pontapé inicial do projeto DBA.
Bem verdade que ele já começou faz muito tempo, pelo menos na minha cabeça, a busca por boa tecnologia com baixo custo, elaboração de plataforma e materiais, Planejamento e divulgação, etc, etc, etc. Pode não parecer, mas isso toma tempo e consome alguns neurônios. He he he. Mas como digo sempre: “Entre mortos e feridos, salvaram-se todos”.
Espero sinceramente que esse projeto seja um sucesso. Claro que isso dependerá muito de você fiel seguidor. rsrsrs

Bem pessoal, vamos deixar de lado o projeto por enquanto, deixa pra de noite a conversa, e vamos para nosso post de hoje.
O assunto que escolhi para abordar com você eu achei muito interessante: conseguir mensurar o tamanho de uma Materialized view caso seja criada.

Bem, primeiro vou fazer um breve explicação do que é materialized view.
Como sempre faço, gosto muito de explicar com exemplos, acho que fixa melhor o conhecimento.
Imaginemos então que em nosso ambiente temos uma tabela, ou conjunto delas, que sofrem muitos inserts, deletes, updates durante o dia. Porém neste mesmo grupo também são feitas diversas consultas de dados.
Supondo que você queira melhorar a performance do sistema, e que as consultas normalmente ocorrem a dados mais históricos, ou seja, não dados online, você poderia optar por criar uma materialized view.
Como o próprio nome diz, ela é uma “visão materializada” da tabela ou grupo de tabelas.
Calma aí que vou explicar o que é esse lance de materializada e sei que irá entender perfeitamente.
Ela é assim chamada, por não ser apenas uma visualização de uma tabela como são os objetos chamados views. Com a materialização, ela passa a ocupar espaço no banco de dados. Neste espaço ela irá guardar dados da tabela ou grupo que ela representa porém estes dados não são online, ou seja, eles não representam exatamente a situação da tabela no exato momento (taí por que são muito utilizadas em BI – Business Inteligence).
As Mviews(como são carinhosamente chamadas)guardam dados e podem desviar o tráfego de grandes instruções SQL fazendo assim com que o tenhamos melhor performance no ambiente.
Ah! Inclusive criação de Mview pode ser uma das sugestões do Oracle Access Advisor.

Ok! Explicado o que é uma mview, lembrando que caso haja alguma dúvida poderá ser solicitado e eu crio post específico, se não também será visto do projeto DBA.

Bem, como nem tudo são flores é claro, para criação de uma mview precisamos de espaço, uma  vez que ela irá realmente armazenar dados. Aí que começa a dica de hoje.
Como mensurar este espaço???

Para isso selecionei um script muito legal que encontrei em um material que estou utilizando para estudo da certificação OCM.

Segue abaixo:

set serveroutput on;
DECLARE
no_of_rows NUMBER;
mv_size NUMBER;
BEGIN
DBMS_MVIEW.estimate_mview_size(‘MV1’,
SELECT c.cust_id, SUM(amount_sold) AS dollar_sales,
COUNT(amount_sold) AS cnt_dollars, COUNT(*) AS cnt
FROM sales s, customers c
WHERE s.cust_id= c.cust_id
 GROUP BY c.cust_id’ , no_of_rows, mv_size);
 DBMS_OUTPUT.put_line ( ”);
 DBMS_OUTPUT.put_line ( ‘Complete MV’);
 DBMS_OUTPUT.put_line ( ‘No of Rows: ‘ || no_of_rows );
 DBMS_OUTPUT.put_line ( ‘MV Size: ‘ || mv_size);
 DBMS_OUTPUT.put_line ( ”);
 END;
 /

Resultado:
Complete MV
No of Rows: 7059
MV Size: 621192
PL/SQL procedure successfully completed.

No código acima as linhas que estão de cor diferente é o select  que dele sairão os dados para serem armazenados na mview.
Quanto ao resultado, é legal que ele traz o volume em bytes e a quantidade de linhas que serão armazenadas.

Assim que vi este script achei interessante, pois ele permite evitar que para tentar resolver um problema (de performance) eu crie outro (de espaço).

Bem caro leitor, espero que tenha curtido.

E por favor, NÃO ESQUEÇA DA TRANSMISSÃO ONLINE HOJE FALANDO DO PROJETO DBA. Se ainda não marcou presença no evento, por favor o faça no link abaixo. Será feito via facebook transmissão online.

Sobre raul andrade

DBA e Instrutor Oracle, apaixonado pela minha família e por ensinar.
Esta entrada foi publicada em DBA Oracle e marcada com a tag , , , . Adicione o link permanente aos seus favoritos.

Deixe uma resposta