使用SetBigStringTryClob使用Oracle JDBC处理CLOB的性能影响

时间:2010-12-20 12:26:12

标签: java oracle jdbc clob

我正在审查一些旧的Java / JDBC代码,以便在oracle数据库上进行CLOB处理。现有代码使用的方法类似于this question中提到的方法。

我发现an article表示:

  

在Oracle JDBC 10g之前,为了操作JDBC中的CLOB数据,使用了Oracle扩展类oracle.sql.CLOB。但是现在,Oracle JDBC 10g有一些增强功能可以简化JDBC应用程序中的CLOB操作。这样就可以使用一些可用的标准API处理大数据,而不是使用Oracle扩展类。

本文提供了有关此增强功能的详细信息的以下信息:

  

默认情况下,prepareStatement.setString()方法允许处理最多32765字节的字符串。为了插入大于32765字节的数据,可以设置新引入的Connection属性 - SetBigStringTryClob。这会强制preparedStatement.setString()使用另一个新引入的方法OraclePreparedStatement.setStringForClob()。

然而它警告说:

  

......以这种方式处理大量数据可能并不明智;流式传输数据是一种更好的选择。

但上面是该文章中唯一与性能相关的警告。 我的问题是,如果我的代码中的所有CLOB访问都是已经通过String对象完成,那么我是否应该担心这种方法改变可能导致的任何其他潜在性能问题?换句话说,我的应用程序没有使用流式传输提供的好处,因为它总是在String对象中加载CLOB,因此上面的警告可能会被忽略,因为我们目前的目标不是提高性能。是否存在因切换到此技术而可能出现的与性能相关的其他问题?

1 个答案:

答案 0 :(得分:1)

你说的有多大?我经常处理内存中的短音频文件和Web图像,没有任何性能问题。这些都是千字节的文件。我想如果你运行兆字节大小,那么流媒体会更好。使用流式传输到LOB实际上很容易使用标准化的东西。