Förutsatt att du redan har kontrollerat de grundläggande nätverksgrejerna som gränssnitt, brandväggar, proxyservrar, liksom även DB-serverns hårdvaruelement.
Alternativ 1 :
Istället för :
Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:1521/orcl", "user", "pass");
försök använda :
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");
Mer information här
Alternativ 2:Fetchsize
Som starkt påpekade av Stephen, verkar apportstorleken för stor.
Och för en hämtningsstorlek på 500 000, vad är din -Xms och -Xmx. Dessutom, i profiler, vad är den högsta högstorleken?
Alternativ 3:DB
-
Kontrollera index och frågeplan för
src_schema.big_table_view
-
Är detta ett verktyg eller ett applikationssystem. Om du bara är ett verktyg kan du lägga till parallella grader, indextips, partitionering etc baserat på DB-systemkapacitet
Alternativ 4:Trådar
Säg
Du kan starta
Som sagt, allt detta bör aldrig vara fördefinierad kod som nu.
Alternativ 5 :
Istället för
Du kan använda
Detta undviker att skapa 500 000
Alternativ 6 :
Under tiden kan du också kontrollera med din DBA för eventuella DB-systemproblem och ta upp en SR med Oracle-support
.n
n
Trådar av writer, var och en konfigurerad att bearbeta en viss hink, t.ex. tråd1 bearbetar 0 till 10000, skriver till n
olika filer, och när alla annonser är klara, post join, slå ihop filerna, helst med hjälp av ett OS-kommando på låg nivå.'n'
och hinkarna bör beräknas vid körning. Och att skapa fler trådar än vad ditt system stöder försvårar bara.select * from src_schema.big_table_view
SELECT column1||CHR(9)||column2||CHR(9).....||columnN FROM src_schema.big_table_view
StringBuilders
och Strings
. (Förutsatt att ingen annan komplex formatering är inblandad). CHR(9) är tabbtecknet.