SQL Server的JDBC数据提取负载性能。 (selectMethod = cursor)/ responseBuffering =自适应)

时间:2019-07-03 12:36:03

标签: java jdbc resultset

我正在尝试通过JDBC将SQL Server 1300万条记录(2.5GB数据)中的一个巨大表加载到Java中。然后,我将在Java上运行一些代码以屏蔽/更新数据并将更新后的数据加载到其他数据库中。我正在尝试了解提高代码性能的最佳方案。

尝试1:使用普通的selectMethod=direct - outcome - OOM error

尝试2:使用selectMethod = cursor fetchSize(200000)-无OOM错误

尝试3:在连接网址中添加sendStringParametersAsUnicode=false-性能没有重大变化

尝试4:删除fetchsize /删除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一起使用吗,它实际上会做什么?

0 个答案:

没有答案