Zakładając, że sprawdziłeś już podstawowe elementy sieci, takie jak interfejsy, zapory, serwery proxy, a także elementy sprzętowe serwera DB.
Opcja 1:
Zamiast :
Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:1521/orcl", "user", "pass");
spróbuj użyć :
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");
Więcej szczegółów tutaj
Opcja 2:rozmiar pobierania
Jak mocno wskazał Stephen, rozmiar fetchsize wydaje się zbyt duży.
A dla rozmiaru pobierania 500 000, jakie są twoje -Xms i -Xmx. Ponadto w profilerze, jaki jest największy rozmiar sterty?
Opcja 3:DB
-
Sprawdź indeksy i plan zapytań dla
src_schema.big_table_view
-
Czy to narzędzie, czy system aplikacji. Jeśli jest tylko narzędziem, możesz dodać równoległe stopnie, wskazówki dotyczące indeksów, partycjonowanie itp. w oparciu o możliwości systemów DB
Opcja 4:wątki
Powiedz
Możesz uruchomić
To powiedziawszy, wszystko to nigdy nie powinno być predefiniowanym kodem, takim jak teraz.
Opcja 5:
Zamiast
Możesz użyć
Pozwala to uniknąć tworzenia 500000
Opcja 6:
W międzyczasie możesz również skontaktować się z administratorem bazy danych pod kątem problemów z systemem DB i zgłosić SR za pomocą obsługi Oracle
.n
n
Wątki pisarza, każdy skonfigurowany do przetwarzania określonego wiadra, np. thread1 przetwarza od 0 do 10000, zapisując do n
różnych plików, a gdy wszystkie reklamy są gotowe, opublikuj połączenie, połącz pliki razem, najlepiej za pomocą polecenia systemu operacyjnego niskiego poziomu.'n'
a zasobniki powinny być obliczane w czasie wykonywania. A tworzenie liczby wątków większej niż ta, którą obsługuje twój system, tylko się zakręca.select * from src_schema.big_table_view
SELECT column1||CHR(9)||column2||CHR(9).....||columnN FROM src_schema.big_table_view
StringBuilders
i Strings
. (Zakładając, że nie ma żadnego innego złożonego formatowania). CHR(9) to znak tabulacji.