开发者社区> 问答> 正文

JDBC ResultSet与SQL Server

使用JDBC createStatement进行查询并从SQL Server获取数百万行的ResultSet时,真正执行哪些SQL查询,将这些行存储在哪里以及多少行?它使用SQL Server游标吗?我知道客户端存储区(Java代码在其中)仅保留了有限数量的行,那么其余的行又保存在哪里,或者也许尚未从SQL Server中查询到它们?当我查看SQL Server事件探查器时,它仅显示普通查询(它未添加游标或其他内容的TOP X)


问题来源:stackoverflow

展开
收起
七天一失眠 2020-04-11 15:47:48 1490 0
1 条回答
写回答
取消 提交回答
  • 做一个优秀的阿里云志愿者

    取自有关自适应缓冲的SQL Server文档:

    通常,当用于SQL Server的Microsoft JDBC驱动程序执行查询时,驱动程序会将所有结果从服务器检索到应用程序内存中。尽管这种方法最大程度地减少了SQL Server上的资源消耗,但是它可以在JDBC应用程序中引发产生非常大结果的查询的OutOfMemoryError。

    有一种解决方法,即SQL Server调用的内容Adaptive Buffering以及默认情况下已启用的功能JDBC driver version 2+,您可能需要在文档中进行阅读。这是要点:

    为了使应用程序能够处理非常大的结果,用于SQL Server的Microsoft JDBC驱动程序提供了自适应缓冲。通过自适应缓冲,驱动程序可以在应用程序需要时从SQL Server中检索语句执行结果,而不是一次全部检索。


    答案来源:stackoverflow

    2020-04-11 15:47:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载