Pesquisar massa de dados MySQL+JAVA

6 respostas
J

Olá pessoal,

Estou estudando um pouco mais sobre pesquisa em java e gostaria de saber se alguém por aqui já conseguiu alguma forma de pesquisar grandes quantidades de dados com java sem estourar o limite de memória.

Estou tentando mostrar todos os registros de uma tabela do banco (MySQL) em uma jTable, o problema é que essa tabela do banco possui aproximadamente 900.000 registros. Como poderia mostrar todos esses registros em uma jTable. É possível fazer isso com JAVA? Ou com outra coisa qualquer que seja?

estou utilizando DAO nos meus testes.

Desde já, obrigado.

6 Respostas

J

Será que ninguém aqui passou por isso ou tem alguma resposta?

Andre_Brito

Você já tentou fazer a consulta e mostrar? Dá OutOfMemory? Se sim, já tentou aumentar a capacidade máxima (-Xmx) da memória que a JVM precisa?

J

Sim, as consultas faço normalmente. Simplesmente não consigo fazer consultas muito grandes como o exemplo que citei acima. Quanto a aumentar a memória da JVM, isso não seria inviável? imagina ter que fazer isso pra todos os clientes que usarão o sistema? acredito que tenha uma maneira de manipular isso sem mexer na JVM.

quando chego a ter 320000 registros aproximadamente do meu Result Set a memória consumida pelo sistema está em 250MB aproximadamente, estou procurando alternativas pra fazer isso, como por exemplo tentar remover o item do Result Set assim que ele for inserido no ArrayList e sucessivamente depois que retornar o ArrayList e inserir na jTable removo o item do ArrayList, mas o problema mesmo é manipular o Result Set e ver se existem mesmo maneiras de pesquisar grandes quantidades de dados no java.

Até agora tentei pesquisar de 1000 em 1000 mas não obtive sucesso, pode ser tbm a maneira como estou pesquisando. Pra vc ter idéia tentei pesquisar até de 1 em 1 mas o ArrayList fica enorme tbm. Sem contar que a jTable tbm cresce de acordo com a quantidade de itens que adiciono nela.

Por enquanto vou testando alguns métodos que projetei aqui para ver se conseguirei fazer isso em java. se não conseguir pesquisar tudo, pelo menos a maior quantidade possível.

Valeu…

J

Nas pesquisas que fiz aqui, um amigo me falou que terei que fazer uma paginação no sistema…

Alguém tem algum exemplo de como fazer isso?

Não estou utilizando hibernate, utilizo apenas DAO para acesso ao meu banco em MySQL.

Andre_Brito

Desculpe a demora.
De fato, aumentar a memória, no seu caso, ficaria ruim. Muitos já reclamam de ter o servidor consumindo 300 mb, imagina quase 1 giga, né?

Paginação parece ser uma boa opção de uso. Eu nunca usei, mas acredito que seja você, ao invés de pegar toda essa quantidade de dados, ir pegando de pedaços em pedaços. Fazendo uma busca bem ligeira, descobri este site. Dá uma lida e ve o que você acha.

Mas assim… isso é só pra termos de curiosidade, né? Porque pra um aplicação real, acho que consulta 900 mil registros nunca seria necessário… Se for, acredito que seria em algo completamente incomum.

J

É, realmente é um caso bem incomum… Não terei 900000 mas terei algo proximo disso… então quero fazer testes com uma quantidade grande mesmo. e o pior e que além de trazer uma grande quantidade de dados do banco, terei que analisar uma lista gigantesca de parâmtros para fazer comparações e cálculos em cima desses registros…

Muito obrigado Andre, o site já está nos meus favoritos, o artigo é muito bom… vou ter que fazer isso de pouco em pouco mesmo… o que vai me dar um pouco mais de trabalho de separar as comparações que se encaixam nos parâmetros aos poucos, mas acredito que esse tipo de pesquisa que queria seja algo “difícil” pra qualquer linguagem de programação.

Valeu.

Criado 11 de abril de 2010
Ultima resposta 15 de abr. de 2010
Respostas 6
Participantes 2