4

DbVisualizer之类的工具通常会在执行数据库查询后显示 exec/fetch 时间。通过 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();

我没有在ResultSetResultSetMetaData类中找到任何此类性能测量功能。没有比使用系统时钟“手动”测量经过时间更好的方法,例如如何计算 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 回答
0

您可以使用该log4jdbc库记录所有 JDBC 连接,请参阅答案log4jdbc 存储库以获取更多信息

于 2018-11-13T07:02:46.900 回答