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

Henter rækker med ekstrem høj hastighed

Forudsat at du allerede har tjekket de grundlæggende netværksting som grænseflader, firewalls, proxyer, samt DB-serverens hardwareelementer.

Mulighed 1:

I stedet for :

Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:1521/orcl", "user", "pass");

prøv at bruge :

OracleDataSource ods = new OracleDataSource();
java.util.Properties prop = new java.util.Properties();
prop.setProperty("MinLimit", "2");
prop.setProperty("MaxLimit", "10");
String url = "jdbc:oracle:oci8:@//xxx.xxx.xxx.xxx:1521/orcl";
ods.setURL(url);
ods.setUser("USER");
ods.setPassword("PWD");
ods.setConnectionCachingEnabled(true);
ods.setConnectionCacheProperties (prop);
ods.setConnectionCacheName("ImplicitCache01");

Flere detaljer her

Mulighed 2:Hentstørrelse

Som stærkt påpeget af Stephen, virker apporteringsstørrelsen for stor.

Og for en hentestørrelse på 500.000, hvad er din -Xms og -Xmx. Hvad er den højeste bunkestørrelse i profiler?

Mulighed 3:DB

  • Tjek indekser og forespørgselsplan for src_schema.big_table_view

  • Er dette et værktøj eller et applikationssystem. Hvis det kun er et værktøj, kan du tilføje parallelle grader, indekstip, partitionering osv. baseret på DB-systemkapaciteter

Mulighed 4:Tråde

Sig n

Du kan starte n Tråde af forfattere, hver konfigureret til at behandle en bestemt bøtte, f.eks. tråd1 behandler 0 til 10000, skriver til n forskellige filer, og når alle de ads er færdige, post join, flet filerne sammen, helst ved at bruge en OS-kommando på lavt niveau.

Når det er sagt, bør alt dette aldrig være foruddefineret kode som det er nu. 'n' og spandene skal beregnes ved kørsel. Og oprettelse af flere tråde, end hvad dit system understøtter, skruer kun sammen.

Mulighed 5:

I stedet for

select * from src_schema.big_table_view

Du kunne bruge

SELECT column1||CHR(9)||column2||CHR(9).....||columnN FROM src_schema.big_table_view

Dette undgår at oprette 500000 StringBuilders og Strings . (Forudsat ingen anden kompleks formatering involveret). CHR(9) er tabulatortegn.

Mulighed 6:

I mellemtiden kan du også tjekke med din DBA for eventuelle problemer med DB-system og rejse en SR med Oracle-support .



  1. MySQL - Kan ikke tilføje eller opdatere en underordnet række:en begrænsning af en fremmednøgle mislykkes

  2. SQL Server opdaterer ikke poster

  3. Hvordan kan jeg filtrere data i et Apex Grid for at vise bestemte ting for bestemte brugergrupper?

  4. Hvornår kan jeg hoste IIS og SQL Server på den samme maskine?