我有一个超过 100K 记录的数据库,我想批量获取结果。我正在使用 SQL 服务器,并且 fetchsize 设置为 50。如何确保只检索 50 条记录,然后检索下 50 条记录。
我尝试使用 P6SPY 调试 SQL,输出显示对结果集中 n 条记录的 n 个查询。我想检查生成的 SQL 并确保应用了 fetchsize。
请帮忙。
这是我的发现:默认情况下,SQL 服务器 JDBC 驱动程序将所有记录提取到内存中。添加selectMethod=cursor
到连接 url 字符串可以解决问题,现在将使用批量大小。
我认为 P6SPY 是应用程序级工具,即它位于应用程序和原始 JDBC 驱动程序之间,因此无法窥探 JDBC 驱动程序和数据库服务器之间的交互。
如果您怀疑 JDBC 驱动程序不支持 fetchsize,您将不得不使用网络数据包嗅探器(如wireshark),使用数据库服务器本身中的任何请求日志记录或驱动程序公开的任何调试日志记录。