Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Pobieranie rzędów z bardzo dużą prędkością

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 n

Możesz uruchomić 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.

To powiedziawszy, wszystko to nigdy nie powinno być predefiniowanym kodem, takim jak teraz. '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.

Opcja 5:

Zamiast

select * from src_schema.big_table_view

Możesz użyć

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

Pozwala to uniknąć tworzenia 500000 StringBuilders i Strings . (Zakładając, że nie ma żadnego innego złożonego formatowania). CHR(9) to znak tabulacji.

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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak opisać tabelę w Oracle bez użycia polecenia DESCRIBE?

  2. Doktryna 2:kaskadowe utrzymywanie tożsamości Oracle IDENTITY zwraca 0 jako ostatnio wstawione ID

  3. Błąd SQL:ORA-00922:brak lub nieprawidłowa opcja tworzenia klucza złożonego

  4. Jak obliczyć wartość kolumny w Oracle 10g?

  5. Porównanie daty Oracle zepsute z powodu czasu letniego