Consulta constante no MySQL

E ai pessoal beleza?

Tô com uma dúvida ao pegar dados no banco.
E o seguinte, eu preciso de tempos em tempos atualizar os dados num painel, e para isso eu pego a lista de pessoas logadas e faço um “for” nesta lista, buscando o nome de um por um no banco e atualizando os dados deste painel.

Meu problema é que este “tempos em tempos” é menos de 1 minuto, a dúvida é se sobrecarrega o sistema ficar fazendo isso, ou se tem um modo melhor de ficar fazendo estas atualizações.

OBS: Isto está sendo desenvolvido em Java!

Abraços

SuperMock

Você pode fazer nesse caso é acessar o banco através de JDBC, fazer a consulta usando um PreparedStatement e manter esse PreparedStatement aberto. Assim você reaproveita o plano de execução que o banco montou para sua query. Além disso, você pode trazer os dados de todos os usuários selecionados de uma vez, utilizando a cláusula IN. É melhor do que fazer N consultas no banco;

Uma segunda alternativa é manter os dados em cache. Assim você carrega os dados e os mantém em memória. Evitando ir ao banco cada vez que eles são solicitiados. O problema neste caso é que você tem que garantir que quem for escrever nas tabelas tem que limpar o cache, talvez você possa utilizar uma tabela auxiliar dizendo se você precisa ou não limpar o cache. Daí você escreve uma trigger para as tabelas nos eventos on_alter. Assim, a cada busca você verifica se o cache precisa ser limpo.

1 curtida