如何获取 JDBC 查询的执行/提取时间?

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中事件的经过时间?所讨论的那样。

3个回答

5
你需要测量时间。通常使用 System.currentTimeMillis() 计算毫秒级别的时间,或者使用 System.nanoTime() 来获得更高的精度/准确性。
在很少使用时自动计时会浪费资源。

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

请参见计时示例


0

您可以使用 log4jdbc 库来记录所有 JDBC 连接,请参考 答案log4jdbc 代码库 获取更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接