Oracle
 sql >> база данни >  >> RDS >> Oracle

Извличане на редове с изключително висока скорост

Ако приемем, че вече сте проверили основните мрежови неща като интерфейси, защитни стени, проксита, както и хардуерните елементи на DB сървъра.

Вариант 1:

Вместо :

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

опитайте да използвате:

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");

Повече подробности тук

Опция 2:Fetchsize

Както беше подчертано от Стивън, fetchsize изглежда твърде голям.

И за размер на извличане от 500 000 какво е вашето -Xms и -Xmx. Също така, в Profiler, кой е най-големият размер на купчината?

Вариант 3:DB

  • Проверете индексите и плана за заявка за src_schema.big_table_view

  • Това инструмент ли е или система за приложение. Ако е само инструмент, можете да добавите паралелни степени, подсказки за индекси, разделяне и т.н. въз основа на възможностите на DB системите

Опция 4:Нишки

Кажете n <Брой ядра на сървъра за приложения

Можете да започнете n Нишки на писател, всяка конфигурирана да обработва определена кофа, напр. thread1 обработва от 0 до 10000, записвайки в n различни файлове и след като всички реклами са готови, публикувайте съединяване, обединете файловете заедно, за предпочитане с помощта на OS команда от ниско ниво.

Въпреки това, всичко това никога не трябва да бъде предварително дефиниран код, както сега. 'n' и кофите трябва да се изчисляват по време на изпълнение. И създаването на брой нишки, по-голям от този, който поддържа вашата система, само се прецаква.

Вариант 5:

Вместо

select * from src_schema.big_table_view

Можете да използвате

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

Това избягва създаването на 500 000 StringBuilders и Strings . (Ако приемем, че няма друго сложно форматиране). CHR(9) е табулаторът.

Вариант 6:

Междувременно можете също да проверите с вашия DBA за всякакви проблеми със системата на DB и да повдигнете SR с поддръжка на 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. Непрекъснато получаване на съдържание от таблична база данни

  2. Oracle PLSQL задаване на курсор от променлива

  3. Как да разделим по месеци и да групираме месеци в тримесечие

  4. Изберете във временна таблица в Oracle

  5. Как да мигрираме база данни на Oracle от AWS EC2 към AWS RDS