【问题标题】:ResultSet.getBlob() very slow on ojdbc8ResultSet.getBlob() 在 ojdbc8 上非常慢
【发布时间】:2018-08-21 11:56:16
【问题描述】:

我想升级我项目的 jdbc-driver。 目前我正在使用 ojdbc5.jar。 我想升级到 ojdbc8.jar。

我注意到现在读取 blob 的速度要慢得多。

    try (Connection connection = DriverManager.getConnection(url, username, password)) {
        try (final PreparedStatement statement = connection.prepareStatement("select * from BLOB_TABLE")) {
            try (ResultSet resultSet = statement.executeQuery()) {
                while (resultSet.next()) {
                    final Blob blob = resultSet.getBlob("MYBLOB");
                }
            }
        }
    }

该表包含 10.000 个条目。 使用 ojdbc5 驱动程序大约需要 0.1 秒。 使用 ojdbc8 驱动程序大约需要 5-6 秒。

我正在使用 Oracle Database XE 11.2 和 12.2 以及 Java 8。 有什么解决办法吗?

【问题讨论】:

  • 您可以尝试联系 Oracle 支持寻求建议/帮助。
  • 如果您实际从 blob 中获取数据,性能会发生什么变化?只是做 getBlob 然后不使用 blob 不是很有帮助。

标签: java sql oracle jdbc blob


【解决方案1】:

较新的驱动程序不仅仅是获取 lob 定位器,它还从 LOB 中预取数据。所以调用resultSet.getBlob(columnName) 可能会更贵,但调用blob.getBytes() 会更快。总体而言,新驱动程序的性能应该会更好。

【讨论】:

    猜你喜欢
    • 2010-12-17
    • 2015-04-14
    • 2018-06-14
    • 2013-06-19
    • 2015-06-11
    • 2018-06-29
    • 2016-02-28
    • 1970-01-01
    • 2015-06-06
    相关资源
    最近更新 更多