如何处理JDBCSQL服务器,Sybase对于长运行和高内存消耗的进程
How to handle JDBC SQL Server, Sybase for long running and high memory consumption process
我有一个查询 Sybase 和 SQL 服务器数据库的批处理作业。此批处理作业最多可以 运行 1 天或更长时间。我们正在 运行 对一小组数据进行此操作,到目前为止在连接超时方面没有错误。我的问题是
如何处理这个漫长的运行ning过程?我是否应该配置重新连接周期以便连接关闭和重新打开?
当结果集可以return返回客户端100万条记录时如何处理?
编辑#1:
这听起来像是 jdbc 的一般性问题,但这并不是因为每个数据库提供商都有自己的选项,例如获取大小。支持与否完全取决于每个提供商。如果Sybase不支持这个,就意味着它会一次加载所有结果到内存中。
这是一个与 Sybase (SAP) ASE 没有严格关系的一般性问题。
如果您希望 tcp/ip 连接不中断,请为网络连接使用一些保持活动参数。如果您想处理网络连接中断,请使用一些连接轮询库。
您不必将整个结果集存储在您的内存中。只需阅读您的行并即时处理它们。如果您确实想在对它们进行任何操作之前获取所有 100 万行 - 那么只需为 JVM 提供更多内存即可。
根据https://docs.oracle.com/cd/E13222_01/wls/docs90/jdbc_drivers/sybase.html。
我们可以通过setFetchSize()来决定一次最多可以保存在内存中的记录数。如果你有足够的内存,你可以将它设置为0。因此,我们可以限制每次获取的内存限额,这样它就不会炸毁我们的内存。
我有一个查询 Sybase 和 SQL 服务器数据库的批处理作业。此批处理作业最多可以 运行 1 天或更长时间。我们正在 运行 对一小组数据进行此操作,到目前为止在连接超时方面没有错误。我的问题是
如何处理这个漫长的运行ning过程?我是否应该配置重新连接周期以便连接关闭和重新打开?
当结果集可以return返回客户端100万条记录时如何处理?
编辑#1:
这听起来像是 jdbc 的一般性问题,但这并不是因为每个数据库提供商都有自己的选项,例如获取大小。支持与否完全取决于每个提供商。如果Sybase不支持这个,就意味着它会一次加载所有结果到内存中。
这是一个与 Sybase (SAP) ASE 没有严格关系的一般性问题。
如果您希望 tcp/ip 连接不中断,请为网络连接使用一些保持活动参数。如果您想处理网络连接中断,请使用一些连接轮询库。
您不必将整个结果集存储在您的内存中。只需阅读您的行并即时处理它们。如果您确实想在对它们进行任何操作之前获取所有 100 万行 - 那么只需为 JVM 提供更多内存即可。
根据https://docs.oracle.com/cd/E13222_01/wls/docs90/jdbc_drivers/sybase.html。
我们可以通过setFetchSize()来决定一次最多可以保存在内存中的记录数。如果你有足够的内存,你可以将它设置为0。因此,我们可以限制每次获取的内存限额,这样它就不会炸毁我们的内存。