Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查JDBC select查询的批大小_Java_Jdbc_Resultset_P6spy - Fatal编程技术网

Java 检查JDBC select查询的批大小

Java 检查JDBC select查询的批大小,java,jdbc,resultset,p6spy,Java,Jdbc,Resultset,P6spy,我有一个超过100K条记录的数据库,我想批量获得结果。我使用的是SQL server,fetchsize集是50。如何确保只检索50条记录,然后再检索下50条记录 我尝试使用P6SPY调试SQL,结果显示resultset中n条记录的n个查询。我想检查生成的SQL并确保应用了fetchsize 请提供帮助。我认为P6SPY是应用程序级工具,即它位于应用程序和原始JDBC驱动程序之间,因此无法监视JDBC驱动程序和数据库服务器之间的交互 如果怀疑JDBC驱动程序不符合fetchsize,则必须使用

我有一个超过100K条记录的数据库,我想批量获得结果。我使用的是SQL server,fetchsize集是50。如何确保只检索50条记录,然后再检索下50条记录

我尝试使用P6SPY调试SQL,结果显示resultset中n条记录的n个查询。我想检查生成的SQL并确保应用了fetchsize


请提供帮助。

我认为P6SPY是应用程序级工具,即它位于应用程序和原始JDBC驱动程序之间,因此无法监视JDBC驱动程序和数据库服务器之间的交互


如果怀疑JDBC驱动程序不符合fetchsize,则必须使用网络数据包嗅探器(如wireshark)、数据库服务器本身中的任何请求日志记录或驱动程序公开的任何调试日志记录

以下是我得出的结论:默认情况下,SQL server JDBC驱动程序会将所有记录提取到内存中。将
selectMethod=cursor
添加到连接url字符串可以解决问题,现在将使用批大小。

查询n个记录的
n意味着什么?你的意思是每一条记录都是通过一次单独的往返到db服务器的方式获取的吗?@可悲的是,我真的认为他想做的是pagination@Kevin分页应该在SQL本身内完成,我认为OP希望获取所有行,但限制到db的往返次数server@MiserableVariable你说得对。我试图限制到db服务器的往返次数。另外,我的意思是,如果数据库中有100条记录,p6spy将在遍历resultSet.next()时输出查询100次。我觉得输出更具欺骗性,更让我困惑。谢谢你的回复。那么,是否没有工具或快速简便的方法来调试JDBC驱动程序发送到数据库服务器的内容呢?我试过wireshark,发现它使用起来有点困难。你们试过在服务器上请求登录吗?如果您想知道JDBC驱动程序和数据库服务器之间发生了什么,要么其中一个必须告诉您,要么您必须窥探。