У меня есть поток Java, получающий данные через сокет и сохраняющий их в базе данных Oracle.
Java 1.6 Oracle 12c Solaris 10
Я вызываю хранимую процедуру с Java. Я использую оператор JDB C callable для вызова хранимой процедуры.
Connection connection = null;
CallableStatement callableStatement = null;
Integer id=0;
try {
connection = dbPool.getConnection();
callableStatement = connection.prepareCall("{call xyz(?, ?)}");
callableStatement.setString(1, "abc");
callableStatement.registerOutParameter(2, java.sql.Types.INTEGER);
callableStatement.execute();
id=callableStatement.getInt(2);
} catch (SQLException e) {
throw new Exception(e);
} finally {
closeAll(callableStatement, connection);
}
Хранимая процедура вызывается для каждого сообщения, которое нужно сохранить в базе данных, и мне нужно вызывать ее для каждого сообщения. Когда я запускал эту хранимую процедуру из блока PL / SQL, она обрабатывала 35 сообщений в секунду, но приложение Java способно обрабатывать только 7 сообщений в секунду, потому что для выполнения вызываемого оператора требуется около 150 миллисекунд.
Мой вопрос: как повысить производительность вызова Java хранимой процедуры Oracle?