Prática para aumentar perfomance do banco de dados
5 respostas
R
RafaelViana
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?
Então o fetch é Eager? Já tentou mudar pra Lazy e ver se o desempenho melhora?
R
RafaelViana
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
RafaelViana
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
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.