JFR JDBC
![Build Status](https://camo.githubusercontent.com/85e556792f1d049b9a522de1de5bd69d87cf100b933b81bfab9ee9eea7a4375e/68747470733a2f2f7472617669732d63692e6f72672f6d6172736368616c6c2f6a66722d6a6462632e7376673f6272616e63683d6d6173746572)
A JDBC driver that wraps an other JDBC driver and generates JFR events.
<dependency>
<groupId>com.github.marschall</groupId>
<artifactId>jfr-jdbc</artifactId>
<version>0.4.0</version>
</dependency>
Usage
Simply wrap your DataSource
with a JfrDataSource
new JfrDataSource(dataSource)
If you use Driver
simply prefix your JDBC URL with "jfr:"
for example use "jdbc:jfr:h2:mem:"
instead of "jdbc:h2:mem:"
.
The project is a Java module with the name com.github.marschall.jfr.jdbc
.
Implementation/Overhead
The implementation is based around wrapper objects.
- no reflection
- no string concatenation
Caveats
- does not work with Oracle explicit statement caching
- does not work with unwrapped objects
- does not work with implicitly closed objects
- does not work with cached statements provided by a connection pool
- only accessing the first warning is instrumented, accessing the following ones is not
- reconstructing the JDBC call time and row count is not super reliable especially in the case for more exotic row iteration