Prior to v4.1 HammerDB has featured a graphical transaction counter, this enables you to see the transaction rate taking place on the database during the test. The transaction counter is designed not to be intrusive on the schema being tested. It also enables you to verify that the transaction rate reported at the end of the test is consistent throughout without peaks and troughs in the graph that would indicate bottlenecks due to configuration issues.
From v4.1 HammerDB also features a transaction counter in the CLI. Similarly to the GUI transaction counter the CLI one also runs in a separate thread to be non-intrusive to main workload. To configure the CLI transaction counter use the tcset command with the same options available in the GUI. The transaction counter can then be started with tcstart, stopped with tcstop and queried with tcstatus.
hammerdb>help tcset tcset - Usage: tcset [refreshrate|logtotemp|unique|timestamps] Configure the transaction counter options. Equivalent to the Transaction Counter Options window in the graphical interface. hammerdb>help tcstart tcstart - Usage: tcstart Starts the Transaction Counter. hammerdb>help tcstatus status - Usage: tcstatus Checks the status of the Transaction Counter. hammerdb>help tcstop tcstop - Usage: tcstop Stops the Transaction Counter.
An example test script is shown including the transaction counter commands.
dbset db mssqls diset connection mssqls_server {(local)\SQLDEVELOP} diset tpcc mssqls_driver timed diset tpcc mssqls_rampup 1 diset tpcc mssqls_duration 2 vuset logtotemp 1 tcset logtotemp 1 tcset timestamps 1 loadscript vuset vu 2 vucreate tcstart tcstatus vurun runtimer 200 vudestroy tcstop
When we run the script we have now activated the transaction counter to run throughout the test.
hammerdb>source sqlrun.tcl Database set to MSSQLServer Changed connection:mssqls_server from (local) to (local)\SQLDEVELOP for MSSQLServer Clearing Script, reload script to activate new setting Script cleared Changed tpcc:mssqls_driver from test to timed for MSSQLServer Changed tpcc:mssqls_rampup from 2 to 1 for MSSQLServer Changed tpcc:mssqls_duration from 5 to 2 for MSSQLServer Transaction Counter log to temp set to 1 Transaction Counter timestamps set to 1 Script loaded, Type "print script" to view Vuser 1 created MONITOR - WAIT IDLE Vuser 2 created - WAIT IDLE Vuser 3 created - WAIT IDLE Vuser 4 created - WAIT IDLE Vuser 5 created - WAIT IDLE Logging activated to C:/Users/Steve/AppData/Local/Temp/hammerdb.log 5 Virtual Users Created with Monitor VU Transaction Counter logging activated to C:/Users/Steve/AppData/Local/Temp/hdbtcount.log Transaction Counter Started Transaction Counter thread running with threadid:tid0000000000002F88 Vuser 1:RUNNING 0 MSSQLServer tpm Vuser 1:Beginning rampup time of 1 minutes Vuser 2:RUNNING Vuser 2:Processing 1000000 transactions with output suppressed... Vuser 3:RUNNING Vuser 3:Processing 1000000 transactions with output suppressed... Vuser 4:RUNNING Vuser 4:Processing 1000000 transactions with output suppressed... Vuser 5:RUNNING Vuser 5:Processing 1000000 transactions with output suppressed... 238182 MSSQLServer tpm 261366 MSSQLServer tpm 251310 MSSQLServer tpm 255102 MSSQLServer tpm 252180 MSSQLServer tpm Vuser 1:Rampup 1 minutes complete ... Vuser 1:Rampup complete, Taking start Transaction Count. Vuser 1:Timing test period of 2 in minutes 228408 MSSQLServer tpm Timer: 1 minutes elapsed 267666 MSSQLServer tpm 248466 MSSQLServer tpm 283332 MSSQLServer tpm 270900 MSSQLServer tpm 242988 MSSQLServer tpm Vuser 1:1 ..., 246384 MSSQLServer tpm Timer: 2 minutes elapsed 255042 MSSQLServer tpm 275712 MSSQLServer tpm 260112 MSSQLServer tpm 258246 MSSQLServer tpm 243798 MSSQLServer tpm Vuser 1:2 ..., Vuser 1:Test complete, Taking end Transaction Count. Vuser 1:4 Active Virtual Users configured Vuser 1:TEST RESULT : System achieved 112009 NOPM from 257938 SQL Server TPM Vuser 1:FINISHED SUCCESS Vuser 3:FINISHED SUCCESS Vuser 2:FINISHED SUCCESS Vuser 5:FINISHED SUCCESS Vuser 4:FINISHED SUCCESS ALL VIRTUAL USERS COMPLETE runtimer returned after 178 seconds 235392 MSSQLServer tpm vudestroy success Transaction Counter thread running with threadid:tid0000000000002F88 Stopping Transaction Counter Closed Transaction Counter Log
It should also be noted that we now have the option to record the output of the transaction counter to a new log file called hdbtcount.log. We also have the option of giving this file a unique log name and adding timestamps to each line of output. The following shows the contents in the logfile from the previous test.
Hammerdb Transaction Counter Log @ Fri May 07 15:31:33 BST 2021 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 0 MSSQLServer tpm @ Fri May 07 15:31:33 BST 2021 238182 MSSQLServer tpm @ Fri May 07 15:31:43 BST 2021 261366 MSSQLServer tpm @ Fri May 07 15:31:53 BST 2021 251310 MSSQLServer tpm @ Fri May 07 15:32:03 BST 2021 255102 MSSQLServer tpm @ Fri May 07 15:32:13 BST 2021 252180 MSSQLServer tpm @ Fri May 07 15:32:23 BST 2021 228408 MSSQLServer tpm @ Fri May 07 15:32:33 BST 2021 267666 MSSQLServer tpm @ Fri May 07 15:32:43 BST 2021 248466 MSSQLServer tpm @ Fri May 07 15:32:53 BST 2021 283332 MSSQLServer tpm @ Fri May 07 15:33:04 BST 2021 270900 MSSQLServer tpm @ Fri May 07 15:33:14 BST 2021 242988 MSSQLServer tpm @ Fri May 07 15:33:24 BST 2021 246384 MSSQLServer tpm @ Fri May 07 15:33:34 BST 2021 255042 MSSQLServer tpm @ Fri May 07 15:33:44 BST 2021 275712 MSSQLServer tpm @ Fri May 07 15:33:54 BST 2021 260112 MSSQLServer tpm @ Fri May 07 15:34:04 BST 2021 258246 MSSQLServer tpm @ Fri May 07 15:34:14 BST 2021 243798 MSSQLServer tpm @ Fri May 07 15:34:24 BST 2021 235392 MSSQLServer tpm @ Fri May 07 15:34:34 BST 2021
This option to record the transaction counter output is not only available in the CLI, it has also been added to the GUI with a checkbox option of Log Output to Temp with the same additional options as the CLI to use a unique log name and add timestamps.
Adding the Transaction Counter to the CLI and Transaction Counter Logging to both GUI and CLI enables you to record the transaction rate during the test to ensure that the rates are consistent throughout the test without significant variance around your test result.