Calculo para saber o limite de um ResultSet

7 respostas
A

Boa tarde colegas de forum,

Bom preciso saber como calcular o tamanho máximo que um ResultSet pode aguentar… alguém sabe? Preciso disso pois em base disso eu pegar de pouco em pouco os meus dados, visto que meu banco de dados é MUITO volumoso. Sei lá algum calculo comparando o tamanho da tabela do banco e o máximo de memória alocada para o programa para não dar estouro de memória… por favor alguém sabe?
Obrigado

7 Respostas

rmendes08

Não precisa se preocupar, pois o JDBC não faz o fetch dos dados de uma única vez. Você pode obter esse número com o método getFetchSize() da interface Statement. Ela te retorna o máximo de linhas que são trazidos do banco de uma única vez.

A

certo e daih como eu faço para eu pegar os dados? poderia postar algum exemplo? não entendi muito bem como isso me ajudaria na prática

rmendes08

É só usar o JDBC normalmente. Você obtêm um Statement da conexão (geralmente um PreparedStatement) passando a query, executa o Statement obtendo o ResultSet e navega através dele com next().

A

então quer dizer que mesmo uma consulta que me retorna milhões de linhas, o resultset vai aguentar? :?:

A

Há necessidade de trabalhar com esta quantidade de volume de dados? Não vai ter gargalos e muito trafego na rede?

Att

A

Astork:
Há necessidade de trabalhar com esta quantidade de volume de dados? Não vai ter gargalos e muito trafego na rede?

Att

preciso sim… meu banco de dados é do tipo volumosos mesmo. A minha preocupação era se o resultset iria aguentar. Obrigado

drigo.angelo

Tem um jeito, não é exatamente muito “bonito” mas já ajuda a fazer paginação, e buscar os dados por blocos…

tipo assim, tem uma função em SQL count(coluna) em que coluna é o nome da coluna mesmo, mas para esse fim o pessoal utiliza SELECT COUNT(*) + FROM tabelas WHERE condições, de modo a retornar a quantidades de resultados retornados pela sua consulta, daí depois você faz a paginação com limit e offset.

Como eu disse deve haver uma forma mais “bonita” de fazer isso, talvez até algum framework/tecnologia/api que implemente isso, mas eu ainda não conheço, faço na mão mesmo…

Pelo que eu entendi é mais ou menos isso que você quer, agora se alguém conhecer uma forma melhor de fazer isso…

Espero ter ajudado, []'s

Criado 24 de janeiro de 2011
Ultima resposta 25 de jan. de 2011
Respostas 7
Participantes 4