Estratégias para Otimização de Consultas do Hibernate em uma Aplicação Web

40
Estratégias para Otimização de Consultas do Hibernate em uma Aplicação Web Orientadores: Prof. MSc Luiz Eduardo Guarino Prof. MSc Leandro Guarino Allan Silva Heitor Bernardino Outubro - 2014

Transcript of Estratégias para Otimização de Consultas do Hibernate em uma Aplicação Web

Estratégias para Otimização de Consultas do Hibernate em uma Aplicação Web

Orientadores: Prof. MSc Luiz Eduardo Guarino

Prof. MSc Leandro Guarino

Allan SilvaHeitor Bernardino

Outubro - 2014

Agenda• Introdução e Objetivos• Desempenho em Aplicações Web • ORM e Hibernate• Otimização de Consultas• Testes e Monitoramento• Metodologia• Estudo de Caso• Estratégias aplicadas e analisadas• Resultados • Conclusões e Trabalhos Futuros

Introdução ao Problema

• Aplicações Web e Velocidade

Introdução ao Problema

• Necessidade/Exigência dos Usuários

O que está por trás disso?

Objetivos

• Otimizar consultas de uma aplicação através da implementação de estratégias analisadas;

• Reunir dados de desempenho para tomar decisões de negócio que afetam o sistema;

• Melhorar a qualidade percebida pelos usuários.

Desempenho

• Alguns indicadores:– Tempo de Resposta (Response time), – Carga (Load), – Vazão (Throughput), – Gargalo (Bottleneck)

• Tempo de Resposta: medida de desempenho de interesse do usuário.

Onde pode estar a lentidão?

Fatores de Impacto no Desempenho

• Conteúdo;• Software do Servidor;• CPU, Disco, I/O ... Infraestrutura;• Largura de banda da rede;• Banco de Dados;• Aplicação – Desempenho no acesso a dados.

Persistência de Dados• Na maioria dos casos, dados são gravados em bancos

relacionais;

• ... E desenvolvemos orientado a objetos...

Paradigmas diferentes!

ORM

• Impedância Objeto-Relacional

Hibernate

• Ferramenta para mapeamento objeto relacional;

• Implementação da especificação de persistência de dados em Java (JPA);

• Existem outras: EclipseLink, Open JPA, DataNucleus etc.

Mais uma camada

Qual o custo?

Problemas Comuns

• O problema do select n + 1 –Você faz uma consulta e são executadas N

consultas em sequência;–número de queries excessivas.

Otimização de Consultas

• Reformular consultas;

• Reduzir ou distribuir os hits ao banco de dados;

• Utilizar recursos adicionais (memória...);

• Obter o mesmo resultado;

• Tempo de resposta menor.

Testes de Desempenho

• Verificar o tempo de resposta e o rendimento da aplicação de acordo com o resultado esperado

Testes de Desempenho

• Tempo x Carga;• Gargalos;• Expectativas;• Métricas para Medições;• Voltado ao Ambiente e não à Funcionalidade;• Ambiente similar ao de Produção;• Base para otimização.

Metodologia de Testes

Monitoramento e Métricas

• "Se você não pode medir algo, você não pode melhorá-lo“ (Lord Kelvin);

• Definição do desempenho em termos quantitativos.

Processo de Testes + Otimização

Estudo de Caso

• Sistema de Gestão e Apoio a Processos

Execução dos Testes

Dados base para Testes

• Questionário sobre Sistema

– Demanda, Picos, Tempo de resposta ideal, etc.

• Consulta de Nota Fiscal;

• Filtros de busca mais utilizados;

• Retorno de 5 mil linhas;

• Carga de 1, 10 e 100 usuários.

Ambiente de Testes• Servidor– Windows 2003 Server– 2.4Ghz Intel Xeon– 2Gb RAM– JDK 1.7– Apache Tomcat 7.0.55– PostgreSQL 9.3

• Cliente– Windows 7– 1.8Ghz Intel Pentium Dual Core– 2Gb RAM

Estratégias

• HQL (Cenário base);• Select New;• Named Query;• Lazy Loading;• Criteria;• Cache L2.

HQL (Cenário base)

Select New

Named Query

Lazy Loading

Criteria Lazy

Cache de Segundo Nível + Query Cache

Análise dos Resultados

• Transformar os dados brutos gerados em informações significativas

1 Usuário

10 Usuários

100 Usuários

Considerações Finais

• Sempre precisamos considerar o desempenho?• Melhor usar SQL puro do que ORM? –DEPENDE!

• Possibilidade: Adoção de abordagens mistas;

• Não há “uma estratégia para performar tudo”;

• Objetivos alcançados

Trabalhos Futuros

• Análise com mais variáveis e estratégias;

• Outras operações;

• Plataformas móveis;

• Abordagem de OGM(Object/Grid Mapper).

Referências

• Sistema de Banco de Dados• Java Persistence with Hibernate• Just Hibernate• Pro JPA 2• The Art of Application Performance Testing• Artigos Científicos• Documentação das Ferramentas

Perguntas e Contribuições

Estratégias para Otimização de Consultas do Hibernate em uma Aplicação Web

Orientadores: Prof. MSc. Luiz Eduardo Guarino

Prof. MSc. Leandro Guarino

Allan SilvaHeitor Bernardino

Outubro - 2014