Swingbench 2.8
I’m pleased to announce the release of Swingbench 2.8. It includes A new html front end to run and review benchmark runs New tool to render results with...
I’m pleased to announce the release of Swingbench 2.8. It includes
Clearly the standout feature of this release is the the new HTML frontend allowing you to run swingbench on or close to the server. Similar to a web application. There will be plenty of improvements to the the web front end in the comming months. Lets quickly go through some of these changes
You can launch the web front end by using the command
./sbweb
By default it will run off port 8080 but you have the option to change it at launch by simply specifying the port number. See the help defintion below.
./sbweb --help
Usage: WebServer [port] [--config <file>] [--debug]
port Port to listen on (default 8080)
--config, -c FILE Preload this configuration XML into memory for editing/starting
--debug Enable verbose (FINE) logging to stdout
Open a browser and visit http://localhost:8080 to access the web front end. You should see the following

Before running a workload, you must first select a config file from the “Workload” drop down. This will load a memory resident version of the file. This can be modified in the UI or by clicking on the “Edit Config” button. It’s worth noting that any changes made to this file will not be saved to disk.
On pressing the “Start Benchmark” button, the user’s threads will start running against the target database. When the user presses the stop button or the timers expire, the user session threads will stop running transactions. A short time after this, a window will appear showing the results which have also been stored in the database. You can preview previous runs by clicking on the “Past benchmark runs”. This is retrieve a list of previous runs. By clicking on anyone of these runs, you will bring up a report showing some of the runs’ key metrics.
Whilst XML is simple to parse by a computer it is not necessarily ideal for humans. In the bin/winbin directory you’ll find three utilities that will convert XML files or the JSON held in the database into text, pdfs or csv files. These utilities are called results2pdf, results2txt and compareresults2pdf.
./compareresults2pdf -u soe -p soe -cs //localhost/soe --list
== Available Runs ==
+----+---------------------+--------------------------------------+
| ID | Recording Time | Recording Name |
+----+---------------------+--------------------------------------+
| 41 | 2025-11-07 09:28:00 | "Order Entry (PLSQL) V2" - Charbench |
| 22 | 2025-11-06 15:50:54 | "Order Entry (PLSQL) V2" - Charbench |
| 21 | 2025-11-06 15:50:20 | "Order Entry (PLSQL) V2" - Charbench |
| 1 | 2025-11-06 15:45:35 | "Order Entry (PLSQL) V2" - Web UI |
+----+---------------------+--------------------------------------+
To compare previous runs run a command similar to
./compareresults2pdf -u soe -p soe -cs //localhost/soe --ids 21,22,41
PDF written to: /Users/dgiles/java/swingbench/swingbench/bin/results_comparison.pdf
Or if you want to generate a pdf report of comparison of results files run a command like
./compareresults2pdf -f results27102024.xml,results27102025.xml,results27102026.xml
PDF written to: /Users/dgiles/java/swingbench/swingbench/bin/results_comparison.pdf
To generate text output you can run a similar command to
./results2txt -f results27102024.xml,results27102025.xml,results27102026.xml
== Overview ==
+----------------+--------------------------+--------------------------+--------------------------+
| Metric | results27102026.xml (-) | results27102025.xml (-) | results27102024.xml (-) |
+----------------+--------------------------+--------------------------+--------------------------+
| Recording Name | "Order Entry (PLSQL) V2" | "Order Entry (PLSQL) V2" | "Order Entry (PLSQL) V2" |
| Avg TPS | 1904.5 | 1920.6 | 1604.8 |
| Total Txns | 38089 | 38411 | 32095 |
| Failed Txns | 0 | 0 | 0 |
| Run Time | 0:00:20 | 0:00:20 | 0:00:20 |
| Users | 120 | 160 | 160 |
| Time Of Run | 31 Oct 2025, 15:27:29 | 31 Oct 2025, 15:26:45 | 31 Oct 2025, 15:24:56 |
+----------------+--------------------------+--------------------------+--------------------------+
== DML Totals ==
+--------------------+---------------------+---------------------+---------------------+
| DML Metric | results27102026.xml | results27102025.xml | results27102024.xml |
+--------------------+---------------------+---------------------+---------------------+
| SelectStatements | 157702 | 158989 | 133047 |
As always you can download the most recent version of the code here
I’ve also added a video that discusses some of these changes. You can view it on my YouTube channel here.
I’m pleased to announce the release of Swingbench 2.8. It includes A new html front end to run and review benchmark runs New tool to render results with...
I’ve added a new tool (added in September 2025) to enable you to compare benchmark results that are generated and stored in the database (see here). The tool...
There’s a new version of swingbench that includes the TPC-C benchmark and a tool to extract benchmark results from the database and export them as text or cs...
I’ve just added some functionality to Swingbench that I probably should have added a long time ago. Now, every time you run a benchmark using Charbench, Swin...
I know it’s been a while since we’ve had a swingbench update. Thats mainly because of work commitments and “life”. Thats not to say there hasn’t been work go...
A small but significant set of changes Last weekend I updated swingbench to add a few features that I’ve had frequent requests for. One is the addition of da...
A new build of Swingbench with a whole bunch of small changes mainly related to the benchmarks. Faster build time for the JSON benchmark when creating lar...
In my previous post “Going Big” I discussed the difference testing a data set of a representative size can make to the usefulness of a benchmark. Running a w...
Swingbench makes it simple to generate a dataset that you can simulate transactions against. However one of the problems I commonly see is that the users of ...
To celebrate the new release of “Oracle Database Free 23c : Developer Release” I’m releasing a new build of swingbench. This build includes a new “Movie Stre...
Swingbench 2.7 So I finally found some time to get a new build of swingbench done. The big change is that swingbench now only supports JDK-17 and above. Now,...
Hybrid Partitioned tables continues to be one of my favorite features of Oracle Database 19c and they’ve gotten better over time as we’ve introduced new feat...
Following quickly on the heels of the update to MonitorDB I’m releasing a new build of DBTimeMonitor. This is a simple update using the latest Oracle jdbc dr...
I’ve just updated MonitorDB. It’s never going to replace Grafana but if you need a quick solution to monitor a few values inside of the Oracle Database and y...
This short blog isn’t about best practices when conducting benchmarks. I think there are plenty of formal papers on the subject available with just a quick G...
I’ll make a confession. I don’t own a Microsoft Windows Machine. I never have and probably never will. This means that I generally never get the oppertunity ...
A New Release of Swingbench… Along with a new website, I’m rolling out a new build of Swingbench. This release is a little embarrassing for me, as it include...
A New Start… Quite a lot has changed since I last posted on this website. I had just left Oracle to join Google… A year and a half later I returned to Oracle...