4

通常、 DbVisualizerなどのツールは、データベース クエリの実行後に実行/フェッチ時間を表示します。JDBC を介してクエリを実行した後、そのようなパフォーマンス メトリックにアクセスすることは可能ですか?

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
ResultSetMetaData rsmd = rs.getMetaData();

// missing functionality:
float executionTime = rsmd.getExecTime();
float fetchTime = rsmd.getFetchTime();

ResultSetまたはResultSetMetaDataクラスのいずれにも、そのようなパフォーマンス測定機能は見つかりませんでした。たとえばJavaでイベントの経過時間を計算するにはどうすればよいですか?

4

3 に答える 3

5

タイミングを計る必要があります。通常、ミリ秒単位で時間を計測するか、解像度/精度を高めるためにSystem.currentTimeMillis()使用します。System.nanoTime()

めったに使用されないときにこれを自動的に計時するのはもったいないでしょう。

于 2012-08-31T12:57:28.007 に答える
0

Sormula ORM は、タイミング情報をログに記録できます。

description=SELECT id, firstName, lastName, graduationDate FROM Student WHERE id IN (?, ?)
prepare    = 50% 00:00:00.000382423 n=  1 avg=00:00:00.000382423
write      =  7% 00:00:00.000054496 n=  1 avg=00:00:00.000054496
execute    = 25% 00:00:00.000190143 n=  1 avg=00:00:00.000190143
read       = 19% 00:00:00.000144009 n=  2 avg=00:00:00.000072005
total      =100% 00:00:00.000771071

タイミングの例を参照してください。

于 2012-08-31T13:20:20.853 に答える