Вставка/обновление со значениями NULL в Oracle JDBC вызывает проблемы с производительностьюJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Вставка/обновление со значениями NULL в Oracle JDBC вызывает проблемы с производительностью

Сообщение Anonymous »

У нас есть приложение Spring, подключающееся к Oracle через SpringJDBC (jdbcTemplate),

Код: Выделить всё

com.oracle.database.jdbc
ojdbc11
23.3.0.23.09

В нашем классе DAO у нас есть INSERT, выполняемый с помощью jdbcTemplate.update():

Код: Выделить всё

String sql = """
INSERT INTO
MY_TABLE (
COL1,
COL2,
COL3)
VALUES (?, ?, ?)
""";
jdbcTemplate.update(sql, param1, param2, param3/* may be NULL*/);
Третий параметр может быть вставленным значением NULL. Если оно не NULL, производительность высокая, проблем нет. Но когда он равен NULL, первая такая вставка занимает ~2 минуты, а все последующие такие вставки все еще довольно медленные (около 10-30 секунд).
< strong>Это не проблема БД: Я проверил в БД (SqlDeveloper), что все INSERT как с NULL, так и без них в этом столбце одинаково быстры непосредственно в БД, поэтому мы можем исключить БД.
Поскольку Oracle рассматривает пустые строки как NULL, мы нашли хорошее решение: просто передайте пустую строку вместо NULL:

Код: Выделить всё

(param3 == null ? "" : param3)
и это устраняет проблему с производительностью, и вставляется NULL. Но является ли эта проблема NULL известной проблемой драйвера Oracle JDBC? Я не знаю, будет ли это работать всегда, например, можно ли отключить в БД эквивалентность NULL/пустая. Есть ли другие обходные пути?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ance-issue
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»