No começo era rapinho, agora comk muitos acessos simultaneos e muitos registro no bd, ficou muito lento e o pessoal começou a reclamar, o que eu poderia usar para melhorar?
Uso java 5 Hibernate 3 e tomcat.
Qualquer sugestão será bem vinda.
No começo era rapinho, agora comk muitos acessos simultaneos e muitos registro no bd, ficou muito lento e o pessoal começou a reclamar, o que eu poderia usar para melhorar?
Uso java 5 Hibernate 3 e tomcat.
Qualquer sugestão será bem vinda.
Primeiro de tudo, use um profiler para ver onde está o problema de performance.
No caso de BD:
Já tentou fazer profiling?
provavelmente como vc citou que no começo era rápido e depois que foram inseridos vários registros no banco… talvez vc esteja com alguma consulta fazendo coisas que não deveria… ou talvez algum algoritmo não muito legal… tudo isso depende muito… e vc só vai saber realmente o que está acontecendo quando tiver instrumentação pra isso… isso signigfica que você vai precisar “perder” algum tempinho coletando dados… até que td esteja mais claro e vc saiba em que ponto o sistema está falho…
Uma sugestão caso vc ainda não esteja usando é controle de paginação…
o banco retorna menos resultados e a resposta eh bem mais rápida 
hibernate tem suporte a paginação…
Enfim… ta dada a dica 
Existem n maneiras de melhorar o desempenho de um sistema.
eu começaria analizando as suas consultas no banco de dandos
como esta os indeces, se exciste alguma busca sequencial. etc.
no mais nossos amigos ja mencionaram.
Abraço
Você faz relacionamentos entre ORMs no uso do Hibernate?
Se sim, verifique os relacionamentos entre eles, dependendo de como está, o Hibernate pode estar trazendo informações a mais nas buscas.
Alem de tudo isso (e talvez antes de tudo isso), ja olhou os indices do seu banco? Arrume um DBA competente pra dar uma olhada na sua aplicacao.
Você está usando qual pool de conexões? Faz uso de lazy loading? Fale mais da sua aplicação.
abraços,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- ******************************************************
CONFIGURAÇÕES DO BANCO DE DADOS
*********************************************************** -->
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.username">requisicao</property>
<property name="hibernate.connection.password">141296</property>
<property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/requisicao2?charSet=LATIN1</property>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.connection.lc_ctype">LATIN1</property>
<property name="hibernate.connection.charSet">LATIN1</property>
<property name="hibernate.show.sql">false</property>
<!-- ******************************************************
CONFIGURAÇÕES DO POOL C3P0
*********************************************************** -->
<property name="c3p0.acquire_increment">1</property>
<property name="c3p0.max_size">30</property>
<property name="c3p0.max_statements">0</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.timeout">100</property> <!-- seconds -->
<property name="c3p0.idle_test_period">100</property><!-- seconds -->
</session-factory>
</hibernate-configuration>
@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
@JoinColumn(name = "idpax", unique = false, nullable = false, insertable = true, updatable = true)
public Usuariorequisicao getUsuariorequisicaoByIdpax() {
return this.usuariorequisicaoByIdpax;
}
Como que faço para usar Cache do Hibernate?
Problemas de performance associadas a sistemas que cresceram muito a base de dados normalmente está associado a mau uso do banco. Se for realmente crítico contrate um DBA (que sabe o que faz). Por exemplo, tenha cuidado com os campos de joins e com os filtros mais usados.
Se uma tabela é grande (muitos registros) e um determinado campo é sempre usado para filtro, então tá na hora de pensar em colocar um índice nesse campo. Mesma coisa para um campo que é sempre usado para joins. Só não vai pegar uma tabela de 20 colunas e colocar índice para todos os campos, porque a cada inclusão, o BD vai ter que tratar de modificar cada um dos índices. Cuidado também com joins de 2 tabelas grandes.
Só para saber, qual o bd?
Problemas de performance associadas a sistemas que cresceram muito a base de dados normalmente está associado a mau uso do banco. Se for realmente crítico contrate um DBA (que sabe o que faz). Por exemplo, tenha cuidado com os campos de joins e com os filtros mais usados.Se uma tabela é grande (muitos registros) e um determinado campo é sempre usado para filtro, então tá na hora de pensar em colocar um índice nesse campo. Mesma coisa para um campo que é sempre usado para joins. Só não vai pegar uma tabela de 20 colunas e colocar índice para todos os campos, porque a cada inclusão, o BD vai ter que tratar de modificar cada um dos índices. Cuidado também com joins de 2 tabelas grandes.
Só para saber, qual o bd?
Resp. Postgre