あなたの質問は曖昧すぎます。
たとえば、バッチとして実行するためにSQLサーバーに渡す1000のSQLがありますか?
この場合、次のことができます。
long start = System.currentTimeMillis();
execute SQL script
System.out.println("took:"+System.currentTimeMillis() - start);
アプリケーションとは別のアクションとして実行される一連のSQLクエリがあり、平均時間を測定したい場合は、エグゼキュータを使用してタスクを送信し、それぞれの時間を追加して(上記と同様)、最後に除算することができます実行されたクエリの数。
更新:
これにはスレッドプールを使用できます。
例(省略された例外処理):
Collection<Callable<Long>> sqlTasks = new ArrayList<Callable<Long>>();
sqlTasks.add(new Callable<Long>(){
@Override
public Long call() throws Exception {
long start = System.currentTimeMillis();
// DO SQL QUERY HERE
//return delay
return System.currentTimeMillis() - start;
}
});
//ADD MORE TO THE QUEUE
ExecutorService threadPool = Executors.newCachedThreadPool();
List<Future<Long>> results = threadPool.invokeAll(sqlTasks);
long totalDelay = 0;
for(Future<Long> delay:results){
System.out.println("Delay for task"+delay.get());
totalDelay += delay.get();
}
System.out.println("Average Delay per task"+totalDelay / sqlTasks.size());
SQLクエリをキューに追加すると、SQLクエリはスレッドプール内のスレッドによって実行され、それぞれが遅延を返します。
ただし、試行しているSQLDBについても言及する必要があります。おそらく、そのためのパフォーマンスツールはすでに存在します