Sybase Jconnect 驱动程序 - 啥是默认提取大小以及增加提取大小是不是可以使我受益
Posted
技术标签:
【中文标题】Sybase Jconnect 驱动程序 - 啥是默认提取大小以及增加提取大小是不是可以使我受益【英文标题】:Sybase Jconnect Driver - What is default fetch size and if increasing fetch size can benefit meSybase Jconnect 驱动程序 - 什么是默认提取大小以及增加提取大小是否可以使我受益 【发布时间】:2012-03-08 08:24:55 【问题描述】:我正在使用 Sybase Jconnect Driver Jconn3 来执行存储的过程,它返回多达一百万行数据。我从这里和那里了解到,使用更大的获取大小可以改善获取所有数据的时间。
但是我不知道 Sybase Jconnect 驱动程序的默认提取大小是多少。您能否帮助了解 sybase 使用的默认提取大小。 鉴于我有足够的内存/cpu 资源来处理 百万资源在一起,是否建议将 fetchSize 设置为 一切?【问题讨论】:
【参考方案1】:Fetch Size 设置从服务器返回的块中的行数。它通常设置为 0,这意味着一次返回所有行。如果您有足够的记忆力一次接受 1,000,000 行,那么您可以不做设置。
如果你想检查它,只需在语句对象上调用 getFetchSize()。 (您可能需要将对象转换为 SybStatement 才能执行此操作。)
【讨论】:
“返回所有行”是 Sybase 的事情吗?因为 fetchSize 为 0 肯定不会为 Oracle 一次获取所有行。 是的。获取大小由供应商确定。对于 Sybase JConnect,获取大小为 0 表示“全部发送”。对于我设计的大多数 Web 系统,我将获取大小设置为屏幕上行数的某个倍数。我发现接收我永远不会处理的数据没有任何价值。 我不想重复这个问题,所以.. 这是我的。当我为 Jconnect (Sybase) 设置 fetcSize 时,应用程序 ResultSet 只返回一行但有一百万条记录【参考方案2】:经过研究,我发现 Sybase 的 JDBC 驱动程序确实支持流。您可以 setFetchSize() 来限制一次保存在内存中的数据量。如果将值设置为 0,它会将整个数据集加载到内存中。
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc39001.0605/html/prjdbc/X11994.htm
【讨论】:
所以如果使用SybCursorResultSet,它支持流。以上是关于Sybase Jconnect 驱动程序 - 啥是默认提取大小以及增加提取大小是不是可以使我受益的主要内容,如果未能解决你的问题,请参考以下文章
Springboot 与 Sybase 服务器 - 无法加载驱动程序类:com.sybase.jdbc4.jdbc.SybDriver
SQOOP 1 未能加载 Sybase 驱动程序 - 无法加载 db 驱动程序类:com.sybase.jdbc3.jdbc.SybDriver
无法通过 jconn4.jar/Sybase 驱动版本 7 & Mybatis 框架更新 Sybase 数据库中的多条记录