After having used BenchmarkSQL (2.2 or 2.3) on many different RDBMS, I've been surprised to see a high amount of rollback operations compared to commits. In fact rollbacks represent up to 45% of the commits.
I verified this on different Oracle and MySQL testcases.
Digging in the code of jTPCCTerminal.java shows that at the very end of the "newOrderTransaction" procedure:
Hi,
After having used BenchmarkSQL (2.2 or 2.3) on many different RDBMS, I've been surprised to see a high amount of rollback operations compared to commits. In fact rollbacks represent up to 45% of the commits.
I verified this on different Oracle and MySQL testcases.
Digging in the code of jTPCCTerminal.java shows that at the very end of the "newOrderTransaction" procedure:
finally {
try {
terminalMessage("Performing ROLLBACK in NEW-ORDER Txn…");
transRollback();
stmtInsertOrderLine.clearBatch();
stmtUpdateStock.clearBatch();
}
is always called no matter if the previous operations have been commited or not.
In my opinion, we should only run the ROLLBACK in the "1%" exception.
Am I wrong ?
This was fixed in version 4.0 of benchmarksql