sql >> Database teknologi >  >> RDS >> Oracle

Hvad og hvornår skal jeg angive setFetchSize()?

Du bør læse denne side fra de officielle dokumenter om resultatsæt . Det siger

Som standard hentes ResultSets fuldstændigt og gemmes i hukommelsen. I de fleste tilfælde er dette den mest effektive måde at arbejde på, og på grund af designet af MySQL-netværksprotokollen er det nemmere at implementere. Hvis du arbejder med resultatsæt, der har et stort antal rækker eller store værdier og ikke kan allokere heap-plads i din JVM til den nødvendige hukommelse, kan du bede driveren om at streame resultaterne tilbage én række ad gangen.

stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                            java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);

Kombinationen af ​​et fremadrettet, skrivebeskyttet resultatsæt med en hentestørrelse på Integer.MIN_VALUE fungerer som et signal til driveren om at streame resultatsæt række for række. Herefter vil eventuelle resultatsæt, der er oprettet med sætningen, blive hentet række-for-række.

Indstilling af kun fetchSize har faktisk ingen effekt på connector-j-implementeringen.



  1. Giv tilladelser på tabelniveau i SQL Server

  2. SQL Server bcp Utility og den numeriske datatype

  3. En oversigt over Amazon RDS &Aurora-tilbud til PostgreSQL

  4. LTRIM() Funktion i Oracle