2014-10-28 14 views
8

Esiste un numero massimo di righe che un JDBC inserirà in un ResultSet in particolare da una query Hive? Non sto parlando di dimensioni di recupero o di paging, ma il numero totale di righe restituite in un ResultSet.JDBC ha una dimensione ResultSet massima?

Correggetemi se ho torto, ma la dimensione del recupero imposta il numero di righe che jdbc esamina per elaborare con ogni passaggio nel database, inserendo risposte appropriate nel ResultSet. Quando ha attraversato tutti i record nella tabella, restituisce il ResultSet al codice Java. Sto chiedendo se c'è un limite al numero di righe restituite al codice Java.

Se non ha un numero massimo di righe, c'è qualcosa di inerente alla classe che potrebbe causare la cancellazione di alcuni record?

+0

I dati dietro l'oggetto del set di risultati vengono aggiornati mentre il programma è in esecuzione? – Barranka

+3

Suppongo che sarebbe 'Integer.MAX_SIZE' –

+1

Suppongo che la limitazione sarebbe il limite di qualsiasi tipo di raccolta usato come una classe base che penso si avvicini a' Integer.MAX_SIZE' http://stackoverflow.com/a/ 7632240/16959 o la memoria disponibile per archiviare i record (che si esaurisce prima) –

risposta

13

No, non funziona in questo modo. JDBC è solo un wrapper per i database nativi. Ma sia JDBC o cursori di database funzionano allo stesso modo:

  • si invia una query (tramite JDBC) al database
  • database analizza la query e inizializza il cursore (ResulSet in JDBC)
  • mentre si recupera dati dal ResultSet, il software di database passeggiate nel database per ottenere nuove righe e popola il ResultSet

Quindi non v'è alcun limite al numero di righe che una lattina ResultSet contiene, né il numero di righe che un programma client java può elaborare. L'unico limite arriva se si tenta di caricare tutte le righe in memoria per compilare un elenco ad esempio e esaurire la memoria dell'applicazione client . Ma se elabori le righe e non le tieni in memoria, non c'è limite (esattamente come succede quando leggi un file).