Я пытаюсь загрузить очень большую таблицу из 13 миллионов записей SQL Server (2,5 ГБ данных) в Java через JDBC.Затем я буду запускать некоторые коды на Java для маскировки / обновления данных и загрузки обновленных данных в другую базу данных.Я пытаюсь понять наилучший из возможных сценариев для повышения производительности кода.
Попытка 1: используется нормально selectMethod=direct - outcome - OOM error
.
Попытка 2: используется selectMethod = cursor fetchSize (200000) - нетОшибка OOM
Попытка 3: добавлена sendStringParametersAsUnicode=false
к URL-адресу соединения - без существенных изменений производительности
Попытка 4: удален размер выборки / удален selectMethod=cursor
и добавлен responseBuffering=adaptive
.- результат производительности лучше, чем Try2.
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//url = "jdbc:sqlserver://"+server/*+"\\"+instanceName*/+":"+portnbr+";DatabaseName="+db+";sendStringParametersAsUnicode=false;selectMethod=cursor";
url = "jdbc:sqlserver://"+server/*+"\\"+instanceName*/+":"+portnbr+";DatabaseName="+db+";sendStringParametersAsUnicode=false;responseBuffering=adaptive";
//url = "jdbc:sqlserver://"+server/*+"\\"+instanceName*/+":"+portnbr+";DatabaseName="+db+";selectMethod=cursor";
//url = "jdbc:sqlserver://"+server/*+"\\"+instanceName*/+":"+portnbr+";DatabaseName="+db;
//url = "jdbc:sqlserver://"+server+"\\"+instanceName+";DatabaseName="+db;
Я хочу знать, что можно сделать и как лучше всего повысить производительность при большом объеме результатов.- Можно ли использовать fetchSize с responseBuffering = adaptive, что он на самом деле будет делать?