Introdução
Porque meu banco dedados está lento? Aposto que essa seja a pergunta mais comum que qualquer DBA Oracle enfrenta ao longo de sua carreira e a decisão final tomada no final do dia é sempre aumentar a capacidade de infraestrutura do banco de dados. É um mito que o aumento da capacidade do servidor em termos de CPU e RAM seja a solução para todos os problemas de performance, mas caso seja realmente problema de CPU e IO precisamos provar isso através de números. Nessa tentativa eu gostaria de quebrar o mito e compartilhar minha experiência e conhecimento na análise das mais inexplorada área da capacidade de planejamento de métodos estatísticos, que pode ser usado de forma proativa para evitar potenciais problemas imediatos ou até mesmo problemas futuros.
Servidor de banco de dados, você está sendo servido corretamente? O servidor de banco de dados foi provisionado em fase de implementação do projeto. Com o passar do tempo, a carga de trabalho da aplicação aumenta e permanece despercebida e é aí que o desempenho real começa devido à falta de conhecimento da carga de trabalho da própria aplicação.

Ilustração. 1: Um servidor totalmente carregado, rejeita os novos pedidos dos clientes Legenda: “Hey ! Eu não faço mais pedidos de ninguém!”
Você está certo de que o banco de dados é sempre o centro dos problemas? Em casos onde não existe nenhum aumento significativo na carga de trabalho, há grandes chances do problemaser com a aplicação por seremvulneráveis a estouros de memória devido a falhas de arquitetura, nesses casos o problema permanece indetectável, ou o aumento de carga pode ser um SQL fazendo um péssimo plano de execução. Mas, em qualquer um dos casos, o dedo é apontando diretamente para a infraestrutura, como processamento (CPU) e memória (RAM)
Você entende totalmente a sua carga de trabalho? Na maioria dos casos onde a aplicação conecta ao banco de dados são complexas em termos de carga de trabalho e nesses casos, existem pessoas que acreditam que performance tuning é melhor executada iniciando a nível de “sistema” e ir movendo-se abaixo através das camada para encontrar o gargalo(s). Para fazer isso, precisamos estar plenamente conscientes da carga de trabalho do nosso sistema e sua tendência.
Quais são os diferentes métodos estatísticos de análise da capacidade do sistema de um banco de dados? Simple Maths (Matemática simples) – Este modelo pode levar a uma única entrada de componente, aplicativo ou até mesmo uma métrica. Este método é geralmente envolvidos com projetos de curta duração. A precisão é geralmente baixo, mas suficiente, quando utilizado de forma adequada

Ilustração 2: Um resultado da consolidação de servidores usando método Simple Maths.
Essential Forecasting Mathematics (Matemática Essencial De Previsão) – Este método pode produzir previsões relativamente precisas. Este é novamenteum outro método de entrada de componentes por meio de métricas técnicas. Este método é usado com projetos de curta duração.
Linear Regression Analysis (Análise de Regressão Linear) – Este método é geralmente usado para determinar o quanto que uma atividade empresarial pode ocorrer antes que o sistema fique sem combustível. Linear Regression Analysisé um método para investigar relações entre as variáveis. Exemplo: Logical Reads vs. CPU utilization
Fórmula de correlação utilizado em modelo de regressão linear:
CPU utilizada = usercalls * m + c
O coeficiente de correlaçãor = ∑(Yi-Y)(Xi-X)/SQRT(∑(Xi-Y)2(Xi-X)2
O coeficiente de correlação (r) | Significado prático |
0.0 – 0.2 | Muito Fraco |
0.2 – 0.4 | Fraco |
0.4 – 0.7 | Razoável |
0.7 – 0.9 | Forte |
0.9 – 1.0 | Muito Forte |
Nota: – MS Excel fornece a função predefinida CORREL() para a complexa equação matemática (Ótima novidade!)

Ilustração 3: Um template Excel para o método Linear Regression Modelling.
Queuing Theory – Este é basicamente um upgrade para a Essential Forecasting Mathematics, este método é utilizado para predição de alta precisão.
Agner Krarup Erlang(1878 -1929) é o homem por trás dessa teoria. Ele estudou o desempenho das linhas telefónicas. Quando a função Erlang C é usada, nós não aplicamos as fórmulas de tempo de resposta essenciais de previsão (essential forecasting response time), em vez disso, temos uma única e nova fórmula, que pode ser aplicado tanto para CPU como para I/O subsystem.
Para subsistemas de CPU, só há uma fila para o arrival rate de todo o sistema (λsys), mas para subsistemas I/O a arrival rate em cada fila (λq) é a arrival rate do sistema (λsys) dividido pelo número de dispositivos I/O.
Fórmula de correlação utilizado em modelo de filas:
Stλq | |
U= | ———- |
m |
Q = λqQt
Ec = Erlang (m,St,λq)
Ec St | |
Qt= | ———— |
m(1-U) |

Ilustração 4: System response time Vs. System arrival rate.

Ilustração 5: Um template de Excel para Queuing modelling.
Conclusão
Esta é uma introdução a alguns métodos estatísticos e modelos que podem ser usados para replicar no sistema de carga de trabalho nos nossos bancos de dados. Este planejamento de capacidade ou medida de carga de trabalho, quando feito de forma proativa em uma base regular pode prever uma interrupção não programada devido à falta de recursos do sistema, como CPU ou RAM.