如何获取 JDBC 查询的 exec/fetch 时间?

dok*_*par 4 java database performance time jdbc

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();
Run Code Online (Sandbox Code Playgroud)

我没有在ResultSetResultSetMetaData类中找到任何这样的性能测量功能。没有比使用系统时钟“手动”测量经过时间更好的方法了,例如如何计算 java 中事件的经过时间?

Pet*_*rey 5

你必须测量时间。通常,您会以毫秒为单位计时,System.currentTimeMillis()或使用System.nanoTime()更高的分辨率/精度。

在很少使用的情况下自动计时将是一种浪费。