在ojdbc8上ResultSet.getBlob()非常慢

时间:2018-03-13 09:32:02

标签: java sql oracle jdbc blob

我想升级项目的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数据库XE 11.2和12.2以及Java 8。 任何解决方案?

1 个答案:

答案 0 :(得分:1)

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