【问题标题】:Performance implications of handling CLOBs with Oracle JDBC using SetBigStringTryClob使用 SetBigStringTryClob 通过 Oracle JDBC 处理 CLOB 的性能影响
【发布时间】:2011-05-28 05:42:17
【问题描述】:

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

我发现an article 指出:

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

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

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

但它会发出警告:

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

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

【问题讨论】:

    标签: java oracle jdbc clob


    【解决方案1】:

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

    【讨论】:

    • 我澄清了我的问题。我不担心使用内存字符串对性能的实际影响,因为应用程序已经在这样做了。我担心的是这种方法的改变可能导致的任何其他隐藏的性能问题。
    猜你喜欢
    • 2011-07-10
    • 2010-12-04
    • 1970-01-01
    • 2013-11-29
    • 2011-12-10
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    相关资源
    最近更新 更多