Prática para aumentar perfomance do banco de dados

5 respostas
R

Estou usando o banco de dados MySQL sendo acessado pelo Hibernate.

Toda vez que o usuário inserir um novo registro ele e todos usuários do sistema recarregam a lista.Para trabalhar ja com o objeto alterado.

Pensei no QueryCache(MySQL): Any modification (DML, etc.) to a table used by a query in the cache causes the query to be invalidated and removed from the cache.

Mas qualquer alteração nos registros a query sai do cache.

Minha dúvida é qual se posso usar alguma estratégia para diminuir o tempo da pesquisa, já que, apenas um registro é alterado?

5 Respostas

Andre_Brito

Então o fetch é Eager? Já tentou mudar pra Lazy e ver se o desempenho melhora?

R

Na verdade nunca mexi nisso acho que o padrão.

Esse lance de atualizar é através do BlazeDS e o Messaging que fiz um esquema de data-push.

Então assim tem 5 usuários no sistema.O usuário 1 inseriu um cliente o blazeds vai enviar uma mensagem para os 5 que a lista de clientes tem um registro novo então os 5 vão chamar o respectivo remoteobject que atualizará a lista.Portanto na grande maioria dos casos a alteração é feita em apenas 1 registro.

Vou pesquisar sobre os fetchs do Hibernate.

Andre_Brito

Então acho que seu problema não é de Persistência (porque somente 1 objeto é atualizado), mas sim com o Flex. Tenta dar uma utilizada num Profiler pra ver se o que come o tempo fica na parte de JPA mesmo (se for bem rápido, pode ser alguma coisa do BlazeDS).

De qualquer forma, dependendo do tipo da relação (@OneToMany, @OneToOne, …), o tipo do Fetch muda. Que eu me lembre de cabeça, o default de @OneToMany é lazy, mas é interessante você dar uma olhada. Na própria documentação do Hibernate tem isso.

R

OK… Valeu.

Agora to numa correria mas assim que possível foi dar uma com calma com Profiler fazer um tuning completo para ver onde posso aumentar a perfomance.

Então se só um item é atualizado o hibernate “identifica” e só atualiza esse? Essa era minha dúvida inicial e principal o resto vejo depois com tempo quando for tunar :smiley:

Andre_Brito

Dá uma procurada por merge Hibernate no Google que você vai achara documentação. Ou pega o PDF do EntityManager e Annotations que vale a pena a lida (é extenso, mas vale a pena).

Ele faz o seguinte: se o objeto ‘o’ estiver num estado de detached, ele vai persistir. Se estiver num estado de managed, ele vai atualizar.

Criado 12 de novembro de 2009
Ultima resposta 13 de nov. de 2009
Respostas 5
Participantes 2