Производительность загрузки извлечения данных JDBC для SQL Server.(SelectMethod = курсор) / responseBuffering = адаптивная) - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь загрузить очень большую таблицу из 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, что он на самом деле будет делать?

...