Sql Server JDBC驱动程序分页

时间:2017-05-02 13:32:30

标签: sql-server jdbc

我正在使用official download可用的最新(sqljdbc42)SQL Server JDBC驱动程序。 SQL Server源dbs可能在2008年到2016年之间有所不同。

我翻了几句existing threads关于setFetchSize(...),似乎:

  1. 如果有1000行并且获取大小为100,则结果集在内存中一次只有100条记录,并且当调用rs.next()时将进行10次网络访问以获取接下来的100条记录
  2. 目前还不清楚SQL Server JDBC驱动程序是否符合提取大小
  3. 我正在编写一个自定义库供我们内部使用。它将从特定表中选择所有数据,迭代结果并将其写入流。当我尝试为几个表(每个表有几千到几十万行)运行它时,我得到一个OutOfMemoryError但是如果没有,如果我在一个包含数千行的表上进行迭代。我怀疑某处,一张大桌子引起了这个问题。

    虽然我将继续调试我的代码,但我想知道setFetchSize(...)是否真的适用于最新的SQL Server jdbc驱动程序。

    注意:该表没有任何增量列/代理键,我可以手动分页,我需要一些开箱即用的东西

    *****编辑-1 *****

    正如@a_horse_with_no_name的评论中所指出的,我认为' responseBuffering = adaptive'应该明确指定document specifies some ways to do it。挑战是:

    1. 我收到一个自定义数据库连接池实例作为参数,我必须用它来获取一个Connection对象,因此,我无法指定' responseBuffering = adaptive'在db连接URL或其他地方。我得到的只是一个用于使用的连接对象
    2. 我可以使用的唯一相关(?)方法是setClientInfo(...)但我不确定这是否会有所帮助

0 个答案:

没有答案