JDBC Profiling with VisualVM
In this article, the author introduces VisualVM, an open-source tool that allows developers to inspect the JVM and Java applications running inside it. The tool provides various features for monitoring resource consumption, such as CPU usage, memory allocation, and thread information. However, the focus of this article is on VisualVM's JDBC profiling capabilities.
By going to the Profile tab and clicking the JDBC button, developers can start the JDBC profiling, which captures the SQL statements executed by the application. These statements are then ordered by execution time, allowing developers to identify long-running queries that may need optimization. Clicking on an SQL statement provides the corresponding Java stack trace, making it easy to locate the service method responsible for the query.
The article also highlights how VisualVM can help identify N+1 query issues. Developers can look for queries that initialize a single entity or collection by a given parent entity identifier. The author demonstrates this with an example from a Spring PetClinic application, where the N+1 query issue is caused by FetchType.EAGER associations in the Pet parent entity.
Overall, VisualVM's JDBC profiling capabilities make it a valuable tool for monitoring application performance and optimizing SQL queries. Developers looking to improve their application's performance and identify potential issues should consider using VisualVM in their development workflow.