Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Measure sql execution time in a Java Application

Tags:

java

sql

jdbc

Is there a easy way to measure execution time of all sql statements that are executed by JDBC and print the result to the output?

Some may advise me to use AOP to do this but I'm trying to avoid this if possible. Is there another way?

like image 822
Alfredo Osorio Avatar asked Jun 07 '11 23:06

Alfredo Osorio


2 Answers

If you are not running the application in an application server that provides you a DataSource, you would find the log4jdbc project to be useful. The jdbc.sqltiming logger provided by the project will allow you to record the execution of the SQL statements executed.

You could use this in an application that relies on DataSources, by wrapping the connection returned from the DataSource in a ConnectionSpy object. This would require changes in your codebase.

There are of course, other options available the time of writing this:

  • the P6Spy project that can still be used in most application servers. Although certainly dated (and considered abandoned by some), it is by no means obsolete.
  • the JAMon API allows for monitoring of execution time for SQL commands executed. This would require using the JAMon API to monitor the connection.
like image 62
Vineet Reynolds Avatar answered Oct 06 '22 10:10

Vineet Reynolds


Ironically, when viewing your question the advert on the right was for the Appdynamics Lite Java Performance tool.

like image 39
andyb Avatar answered Oct 06 '22 08:10

andyb