私のプログラムは、Oracle クエリのパフォーマンスに問題があります。SQLPlus ではすぐに返されるため、SQL のパフォーマンスは良いと思います。
しかし、私のプログラムが 1 週間のように長時間実行されると、SQL クエリ (JDBC を使用) が遅くなります (私のログでは、最初にプログラムを開始したときよりもクエリ時間が大幅に長くなります)。プログラムを再起動すると、クエリのパフォーマンスが正常に戻ります。
私が使用しているSQLはプレースホルダー「?」を使用していないため、preparedStatementの使用方法に何か問題がある可能性があると思います。まったく。複雑な選択クエリです。
クエリ プロセスは、util クラスによって実行されます。クエリを作成する関連コードは次のとおりです。
public List<String[]> query(String sql, String[] args) {
Connection conn = null;
conn = openConnection();
conn.setAutocommit(true);
....
PreparedStatement preStatm = null;
ResultSet rs = null;
....//set preparedstatment arg code
rs = preStatm.executeQuery();
....
finally{
//close rs
//close prestatm
//close connection
}
}
私の場合、args は常に null なので、クエリ sql をこのクエリ メソッドに渡すだけです。プログラムを長時間実行した後、この方法で DB クエリが遅くなる可能性はありますか? または、代わりにステートメントを使用するか、「?」で引数を渡す必要があります。SQLで?問題の根本原因を見つけるにはどうすればよいですか? ありがとう。