2012-08-31 63 views
0

DbVisualizer这样的工具通常会在执行数据库查询后显示一个执行/读取时间。通过JDBC执行查询后可以访问这些性能指标吗?如何获取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类的任何这样的性能指标的功能。有没有比'手动'使用系统时钟测量经过时间更好的方法,例如在How do I calculate the elapsed time of an event in java?

回答

3

中讨论的,您必须测量时间。通常你会在毫秒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 

请参阅timing example

相关问题