My JavaDB JDBC application is dog-slow (compared to the non-database application it's supposed to replace). I would like to analyse where all the time is going. The application is definitely disk-bound (disk light on permanently), not CPU-bound (utilisation ~10%), so I think traditional CPU profiling may not be very helpful.
Any suggestions for tools that can help? I have used JProbe and JProfiler in the past; licences have lapsed but could be renewed. But do they do wall-clock-timing or only CPU timing?
I looked briefly at Jamon, and it looked like it had some good features for JDBC applications. However, while it was clear how to add monitoring of a Connection, it wasn't at all clear how to get the monitored data out of Jamon! Any help there?
Lastly, any evidence that any other database is much faster (particularly with BLOBs) than JavaDB? Note that I have JavaDB embedded in the same JVM as the application, which would seem to give it a head-start over any DB in a separate process. [ January 05, 2007: Message edited by: Peter Chase ]
Betty Rubble? Well, I would go with Betty... but I'd be thinking of Wilma.
As it happens, though, I discovered that JProfiler would let me have a 10-day evaluation again and I found it very easy to profile my database application using that program. So easy, in fact, that I am hoping to get it bought for me!
I am not clear what you want to profile. The performance of system is tied to the database, and number and frequency of queries. Most databases including Oracle and MySql cache tables in the memory (this happens behind the scene).
From my experience there is not much difference, between databases, regarding queries and insertion. For some reason, accessing Blob is a problem. If your data is ASCII characters I would suggest using VARCHAR.