{"id":1417,"date":"2023-06-22T11:05:16","date_gmt":"2023-06-22T11:05:16","guid":{"rendered":"https:\/\/www.hammerdb.com\/blog\/?p=1417"},"modified":"2023-06-23T15:56:02","modified_gmt":"2023-06-23T15:56:02","slug":"hammerdb-v4-8-new-features-viewing-your-benchmark-results-with-the-hammerdb-web-service","status":"publish","type":"post","link":"https:\/\/www.hammerdb.com\/blog\/uncategorized\/hammerdb-v4-8-new-features-viewing-your-benchmark-results-with-the-hammerdb-web-service\/","title":{"rendered":"HammerDB v4.8 New Features : Viewing your Benchmark results with the HammerDB Web Service"},"content":{"rendered":"<p>In HammerDB v4.7 introduced the concept of Jobs to the CLI, a central repository to store workload output, configuration and results. v4.8 extends this functionality to the GUI and adds a Web Service to view and visualize this Job related data.<\/p>\n<h3>Turning Jobs Off and On<\/h3>\n<p>Of course one of the most important aspects is to be able to disable the functionality. To turn the functionality on or off in the CLI use the jobs disable command.<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">hammerdb&gt;jobs disable 1\r\nDisabling jobs repository, restart HammerDB to take effect\r\n<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>and in the GUI use the Jobs Disabled\/Enabled option.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-35.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1424\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-35.png\" alt=\"\" width=\"394\" height=\"197\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-35.png 394w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-35-300x150.png 300w\" sizes=\"auto, (max-width: 394px) 100vw, 394px\" \/><\/a><\/p>\n<h3>Configuring the Jobs Database<\/h3>\n<p>The base configuration is set in the xml files in the config directory with the jobs SQLite database being set in the commandline section of generic.xml by specifying the filename. So for example to change this to hammer.db in in the DATA directory, set this as follows:<code class=\"notranslate\"><\/code><\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"notranslate\"><code class=\"notranslate\">&lt;commandline&gt;\r\n    &lt;sqlite_db&gt;\/opt\/HammerDB-4.8\/DATA\/hammer.db&lt;\/sqlite_db&gt; \r\n       &lt;keepalive_margin&gt;10&lt;\/keepalive_margin&gt;\r\n       &lt;jobsoutput&gt;JSON&lt;\/jobsoutput&gt;\r\n       &lt;jobs_disable&gt;0&lt;\/jobs_disable&gt;\r\n&lt;\/commandline&gt;<\/code><\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Then HammerDB will initialize this database<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">$ .\/hammerdbcli\r\nHammerDB CLI v4.8\r\nCopyright (C) 2003-2023 Steve Shaw\r\nType \"help\" for a list of commands\r\nInitialized new Jobs on-disk database \/opt\/HammerDB-4.8\/DATA\/hammer.db<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Note that this is the Jobs SQLite database. We also have the configuration SQLite databases that persists the configuration over restarts. This also includes the jobs SQLite database location, so after the configuration SQLite databases are created then changes to the XML files are not re-read until the files are deleted (or it detects a different version of HammerDB and will refresh them automatically).<\/p>\n<p>Therefore the best approach is\u00a0 to leave the configuration as the default of TMP and set an environment variable to the preferred location. On Linux it will look for environment variables TMP, TMPDIR, or TEMP and then finally look for \/tmp. On Windows it will look for TEMP, TMP, TMPDIR or finally C:. for example, on Linux.<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">$ export TMP=`pwd`\/TMP\r\n$ .\/hammerdbcli \r\nHammerDB CLI v4.8\r\nCopyright (C) 2003-2023 Steve Shaw\r\nType \"help\" for a list of commands\r\nInitialized new Jobs on-disk database \/opt\/HammerDB-4.8\/TMP\/hammer.DB<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>This database will be used by both the CLI and GUI and can be moved or removed as preferred. When jobs are enabled, if the database file does not exist in the specified location, it will be recreated.<\/p>\n<h3>Running a workload<\/h3>\n<p>Jobs only modify how output is stored and not how the workload itself is run. In this example, we will run a PostgreSQL TPROC-C autopilot workload to generate some jobs to analyse. Note that if we want to capture a transaction count during a run, then the transaction counter must be enabled and similarly if we want to capture timing data this option must be enabled.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-14-58-25.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1418\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-14-58-25.png\" alt=\"\" width=\"813\" height=\"644\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-14-58-25.png 813w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-14-58-25-300x238.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-14-58-25-768x608.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>We can see that a Job id is created each time a new workload is run.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-12-41.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1419\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-12-41.png\" alt=\"\" width=\"813\" height=\"644\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-12-41.png 813w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-12-41-300x238.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-12-41-768x608.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Starting and Stopping the Web Service<\/p>\n<p>To start and stop the Web Service under the GUI select the Jobs Options under the Tree menu.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-19.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1423\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-19.png\" alt=\"\" width=\"813\" height=\"644\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-19.png 813w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-19-300x238.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-19-768x608.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>The options enable you to start\/stop and query the status of the Web Service.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-35.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1424\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-35.png\" alt=\"\" width=\"394\" height=\"197\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-35.png 394w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-35-300x150.png 300w\" sizes=\"auto, (max-width: 394px) 100vw, 394px\" \/><\/a><\/p>\n<p>When running, the status will show the Web Service environment.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-57.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1425\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-57.png\" alt=\"\" width=\"602\" height=\"405\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-57.png 602w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-22-57-300x202.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/a><\/p>\n<p>Note that on Windows, security features may prevent you opening the port which is by default 8080 and therefore you may need to review the additional options for starting and stopping the Web Service.\u00a0 Therefore we will give examples on Windows, however the commands are the same on Linux as well.<\/p>\n<p>Under the CLI you have the command wsstart, wsstop and wsstatus for the same functionality as the GUI.\u00a0 Also the command wsport can query and change the port the Web Service runs on.<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">HammerDB CLI v4.8\r\nCopyright (C) 2003-2023 Steve Shaw\r\nType \"help\" for a list of commands\r\nInitialized Jobs on-disk database C:\/Users\/hdb\/AppData\/Local\/Temp\/hammer.DB using existing tables (245,760 KB)\r\nhammerdb&gt;wsstart\r\nHammerDB Web Service v4.8\r\nCopyright (C) 2003-2023 Steve Shaw\r\nType \"help\" for a list of commands\r\nStarting HammerDB Web Service on port 8080\r\nhammerdb&gt;wsstop\r\nStopping HammerDB Web Service on port 8080\r\nhammerdb&gt;wsstatus\r\nWeb Service not running: connect failed connection refused\r\nhammerdb&gt;wsport\r\nWeb Service Port set to 8080<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>You can also run the Web Service directly from a command prompt with the additional options of wait\/nowait and gui, with wait, waiting without a CLI prompt, nowait returning a prompt that enables querying the interface directly (with the help command providing a list of commands) and gui that returns no output at all (as run by the GUI).<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">C:\\Program Files\\HammerDB-4.8&gt;hammerdbws wait\r\nHammerDB Web Service v4.8\r\nCopyright (C) 2003-2023 Steve Shaw\r\nType \"help\" for a list of commands\r\nStarting HammerDB Web Service on port 8080<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<h3>Querying Jobs<\/h3>\n<p>With the Web Service running, we can start a browser from the GUI with the Browse option or run a browser directly to the port we have configured.\u00a0 We can now see the list of Jobs we generated with autopilot, that they all ran successfully, and also pinpoint the highest performance.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-24-22.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1428\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-24-22-1024x746.png\" alt=\"\" width=\"525\" height=\"382\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-24-22-1024x746.png 1024w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-24-22-300x219.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-24-22-768x560.png 768w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-24-22.png 1199w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<p>We can now drill down on an individual job to view its configuration and output.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-30-58.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1429\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-30-58-1024x746.png\" alt=\"\" width=\"525\" height=\"382\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-30-58-1024x746.png 1024w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-30-58-300x219.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-30-58-768x560.png 768w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-30-58.png 1199w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<p>Text based data will be shown in JSON format, with the example showing the full workload configuration at the time it was run.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-31-33.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1430\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-31-33-1024x746.png\" alt=\"\" width=\"525\" height=\"382\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-31-33-1024x746.png 1024w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-31-33-300x219.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-31-33-768x560.png 768w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-31-33.png 1199w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<p>The result option will show a chart of the NOPM and TPM data with a link to the data it is generated from.<\/p>\n<p>Charts are generated with Apache echarts and therefore the browser must be able to access the URL.<\/p>\n<p>https:\/\/cdn.jsdelivr.net\/npm\/echarts@5.4.1\/dist\/echarts.min.js<\/p>\n<p>If Apache echarts cannot be downloaded then the chart screens will be left blank.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-31-53.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1431\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-31-53-1024x746.png\" alt=\"\" width=\"525\" height=\"382\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-31-53-1024x746.png 1024w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-31-53-300x219.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-31-53-768x560.png 768w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-31-53.png 1199w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<p>The transaction counter link will be shown if the transaction counter was running during the workload (for both GUI and CLI). If the transaction counter was not running, then the link is omitted.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-51-11.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1436\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-51-11-1024x746.png\" alt=\"\" width=\"525\" height=\"382\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-51-11-1024x746.png 1024w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-51-11-300x219.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-51-11-768x560.png 768w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-51-11.png 1199w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<p>If the timing option was enabled, then\u00a0 a chart for response times is also generated.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-50-33.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1435\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-50-33-1024x746.png\" alt=\"\" width=\"525\" height=\"382\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-50-33-1024x746.png 1024w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-50-33-300x219.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-50-33-768x560.png 768w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-16-50-33.png 1199w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<p>Charts are also generated for TPROC-H results and timings.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-17-36-02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1438\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-17-36-02-1024x861.png\" alt=\"\" width=\"525\" height=\"441\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-17-36-02-1024x861.png 1024w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-17-36-02-300x252.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-17-36-02-768x646.png 768w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-17-36-02.png 1085w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<p>Failed and Unknown Jobs<\/p>\n<p>If a Job errors or is left in an unknown state, then that will be reported in the Job Index. Note the top result is shown for both TPROC-C and TPROC-H.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-17-35-41.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1437\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-17-35-41-1024x861.png\" alt=\"\" width=\"525\" height=\"441\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-17-35-41-1024x861.png 1024w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-17-35-41-300x252.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-17-35-41-768x646.png 768w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2023\/06\/Screenshot-at-2023-06-20-17-35-41.png 1085w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<h3>Job CLI Interface<\/h3>\n<p>Jobs can also continue to be queried directly from the CLI with additional functionality at this interface such as querying the timings of individual Virtual Users.<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">hammerdb&gt;job 6487506D5FDF03E263338333 result\r\n[\r\n  \"6487506D5FDF03E263338333\",\r\n  \"2023-06-12 18:05:49\",\r\n  \"12 Active Virtual Users configured\",\r\n  \"TEST RESULT : System achieved 46050 NOPM from 202715 Db2 TPM\"\r\n]\r\n\r\n\r\nhammerdb&gt;job 6487506D5FDF03E263338333 timing 2\r\n{\r\n  \"NEWORD\": {\r\n    \"elapsed_ms\": \"420335.0\",\r\n    \"calls\": \"26129\",\r\n    \"min_ms\": \"2.274\",\r\n    \"avg_ms\": \"8.121\",\r\n    \"max_ms\": \"194.175\",\r\n    \"total_ms\": \"212183.912\",\r\n    \"p99_ms\": \"24.189\",\r\n    \"p95_ms\": \"14.837\",\r\n    \"p50_ms\": \"7.21\",\r\n    \"sd\": \"4729.629\",\r\n    \"ratio_pct\": \"50.48\"\r\n  },\r\n  \"PAYMENT\": {\r\n    \"elapsed_ms\": \"420335.0\",\r\n    \"calls\": \"26219\",\r\n    \"min_ms\": \"1.742\",\r\n    \"avg_ms\": \"6.192\",\r\n    \"max_ms\": \"154.997\",\r\n    \"total_ms\": \"162349.531\",\r\n    \"p99_ms\": \"18.641\",\r\n    \"p95_ms\": \"11.624\",\r\n    \"p50_ms\": \"5.47\",\r\n    \"sd\": \"3479.359\",\r\n    \"ratio_pct\": \"38.624\"\r\n  },\r\n  \"DELIVERY\": {\r\n    \"elapsed_ms\": \"420335.0\",\r\n    \"calls\": \"2691\",\r\n    \"min_ms\": \"3.615\",\r\n    \"avg_ms\": \"8.983\",\r\n    \"max_ms\": \"66.023\",\r\n    \"total_ms\": \"24172.593\",\r\n    \"p99_ms\": \"27.364\",\r\n    \"p95_ms\": \"15.336\",\r\n    \"p50_ms\": \"8.032\",\r\n    \"sd\": \"4385.244\",\r\n    \"ratio_pct\": \"5.751\"\r\n  },\r\n  \"SLEV\": {\r\n    \"elapsed_ms\": \"420335.0\",\r\n    \"calls\": \"2714\",\r\n    \"min_ms\": \"0.795\",\r\n    \"avg_ms\": \"3.243\",\r\n    \"max_ms\": \"78.237\",\r\n    \"total_ms\": \"8800.962\",\r\n    \"p99_ms\": \"11.414\",\r\n    \"p95_ms\": \"7.068\",\r\n    \"p50_ms\": \"2.586\",\r\n    \"sd\": \"2776.821\",\r\n    \"ratio_pct\": \"2.094\"\r\n  },\r\n  \"OSTAT\": {\r\n    \"elapsed_ms\": \"420335.0\",\r\n    \"calls\": \"2663\",\r\n    \"min_ms\": \"0.705\",\r\n    \"avg_ms\": \"3.072\",\r\n    \"max_ms\": \"55.527\",\r\n    \"total_ms\": \"8180.22\",\r\n    \"p99_ms\": \"10.176\",\r\n    \"p95_ms\": \"6.495\",\r\n    \"p50_ms\": \"2.57\",\r\n    \"sd\": \"2302.054\",\r\n    \"ratio_pct\": \"1.946\"\r\n  }\r\n}<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Additional CLI functionality is also provided with the getchart command to return the HTML for a generated chart.<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">hammerdb&gt;job 6487506D5FDF03E263338333 getchart result\r\n&lt;!DOCTYPE html&gt;\r\n&lt;html&gt;\r\n  &lt;head&gt;\r\n    &lt;meta charset=\"UTF-8\"&gt;\r\n    &lt;title&gt;6487506D5FDF03E263338333 Result&lt;\/title&gt;\r\n    &lt;script type=\"text\/javascript\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/echarts@5.4.1\/dist\/echarts.min.js\"&gt;&lt;\/script&gt;\r\n  &lt;\/head&gt;\r\n  &lt;body&gt;\r\n    &lt;div id=\"id_a3a1672ce6814324bd80d8b84cff1557\" class=\"chart-container\" style=\"width:900px; height:500px;\"&gt;&lt;\/div&gt;\r\n    &lt;script&gt;\r\n        var chart_a3a1672ce6814324bd80d8b84cff1557 = echarts.init(document.getElementById('id_a3a1672ce6814324bd80d8b84cff1557'), null, {renderer: 'canvas'});\r\n        var option_a3a1672ce6814324bd80d8b84cff1557 = {\r\n  \"backgroundColor\": \"rgba(0,0,0,0)\",\r\n  \"color\": [\r\n    \"#5470c6\",\r\n    \"#91cc75\",\r\n    \"#fac858\",\r\n    \"#ee6666\",\r\n    \"#73c0de\",\r\n    \"#3ba272\",\r\n    \"#fc8452\",\r\n    \"#9a60b4\",\r\n    \"#ea7ccc\"\r\n  ],\r\n  \"animation\": true,\r\n  \"animationDuration\": 1000,\r\n  \"animationDurationUpdate\": 500,\r\n  \"animationEasing\": \"cubicInOut\",\r\n  \"animationEasingUpdate\": \"cubicInOut\",\r\n  \"animationThreshold\": 2000,\r\n  \"progressiveThreshold\": 3000,\r\n  \"title\": [{\r\n      \"show\": true,\r\n      \"text\": \"Db2 TPROC-C Result 6487506D5FDF03E263338333 @ 2023-06-12 18:05:49\",\r\n      \"target\": \"blank\",\r\n      \"subtarget\": \"blank\",\r\n      \"textAlign\": null,\r\n      \"textVerticalAlign\": \"auto\",\r\n      \"padding\": 5,\r\n      \"itemGap\": 10,\r\n      \"z\": 2,\r\n      \"left\": \"auto\",\r\n      \"top\": \"auto\",\r\n      \"right\": \"auto\",\r\n      \"bottom\": \"auto\",\r\n      \"backgroundColor\": \"transparent\",\r\n      \"borderColor\": \"transparent\",\r\n      \"borderWidth\": 1,\r\n      \"borderRadius\": 0\r\n    }],\r\n  \"legend\": [{\r\n      \"type\": \"plain\",\r\n      \"show\": true,\r\n      \"z\": 2,\r\n      \"left\": \"45%\",\r\n      \"top\": \"auto\",\r\n      \"right\": \"auto\",\r\n      \"bottom\": \"5%\",\r\n      \"width\": \"auto\",\r\n      \"height\": \"auto\",\r\n      \"orient\": \"horizontal\",\r\n      \"align\": \"auto\",\r\n      \"padding\": 5,\r\n      \"itemGap\": 10,\r\n      \"itemWidth\": 25,\r\n      \"itemHeight\": 14,\r\n      \"symbolRotate\": \"inherit\",\r\n      \"selectedMode\": true,\r\n      \"inactiveColor\": \"rgb(204, 204, 204)\",\r\n      \"inactiveBorderColor\": \"rgb(204, 204, 204)\",\r\n      \"inactiveBorderWidth\": \"auto\",\r\n      \"backgroundColor\": \"transparent\",\r\n      \"borderWidth\": 0,\r\n      \"borderRadius\": 0,\r\n      \"pageButtonItemGap\": 5,\r\n      \"pageIconColor\": \"rgb(47, 69, 84)\",\r\n      \"pageIconInactiveColor\": \"rgb(170, 170, 170)\",\r\n      \"pageIconSize\": 15\r\n    }],\r\n  \"tooltip\": [{\r\n      \"show\": true,\r\n      \"trigger\": \"item\",\r\n      \"showContent\": true,\r\n      \"alwaysShowContent\": false,\r\n      \"triggerOn\": \"mousemove|click\",\r\n      \"transitionDuration\": 0.4,\r\n      \"padding\": 5,\r\n      \"order\": \"seriesAsc\"\r\n    }],\r\n  \"xAxis\": [{\r\n      \"show\": true,\r\n      \"type\": \"category\",\r\n      \"data\": [\"Db2 12 Active Virtual Users configured\"],\r\n      \"gridIndex\": 0,\r\n      \"position\": \"bottom\",\r\n      \"offset\": 0,\r\n      \"nameLocation\": \"end\",\r\n      \"nameGap\": 15,\r\n      \"nameRotate\": 0,\r\n      \"inverse\": false,\r\n      \"boundaryGap\": true,\r\n      \"scale\": false,\r\n      \"splitNumber\": 5,\r\n      \"minInterval\": 0,\r\n      \"silent\": false,\r\n      \"triggerEvent\": false,\r\n      \"axisLabel\": {\r\n        \"show\": true,\r\n        \"interval\": \"auto\",\r\n        \"inside\": false,\r\n        \"rotate\": 0,\r\n        \"margin\": 8,\r\n        \"showMinLabel\": null,\r\n        \"showMaxLabel\": null,\r\n        \"hideOverlap\": false,\r\n        \"fontStyle\": \"normal\",\r\n        \"fontWeight\": \"normal\",\r\n        \"fontFamily\": \"sans-serif\",\r\n        \"fontSize\": 12,\r\n        \"lineHeight\": 12,\r\n        \"backgroundColor\": \"transparent\",\r\n        \"borderWidth\": 0,\r\n        \"borderType\": \"solid\",\r\n        \"borderDashOffset\": 0,\r\n        \"borderRadius\": 0,\r\n        \"padding\": 0,\r\n        \"shadowColor\": \"transparent\",\r\n        \"shadowBlur\": 0,\r\n        \"shadowOffsetX\": 0,\r\n        \"shadowOffsetY\": 0,\r\n        \"textBorderColor\": null,\r\n        \"textBorderWidth\": 0,\r\n        \"textBorderType\": \"solid\",\r\n        \"textBorderDashOffset\": 0,\r\n        \"textShadowColor\": \"transparent\",\r\n        \"textShadowBlur\": 0,\r\n        \"textShadowOffsetX\": 0,\r\n        \"textShadowOffsetY\": 0,\r\n        \"overflow\": \"truncate\",\r\n        \"ellipsis\": \"...\"\r\n      },\r\n      \"zlevel\": 0,\r\n      \"z\": 0\r\n    }],\r\n  \"yAxis\": [{\r\n      \"show\": true,\r\n      \"gridIndex\": 0,\r\n      \"position\": \"left\",\r\n      \"offset\": 0,\r\n      \"realtimeSort\": true,\r\n      \"sortSeriesIndex\": 0,\r\n      \"type\": \"value\",\r\n      \"name\": \"Transactions\",\r\n      \"nameLocation\": \"end\",\r\n      \"nameGap\": 15,\r\n      \"nameRotate\": 0,\r\n      \"inverse\": false,\r\n      \"boundaryGap\": false,\r\n      \"scale\": false,\r\n      \"splitNumber\": 5,\r\n      \"minInterval\": 0,\r\n      \"silent\": false,\r\n      \"triggerEvent\": false,\r\n      \"axisLabel\": {\r\n        \"show\": true,\r\n        \"interval\": \"auto\",\r\n        \"inside\": false,\r\n        \"rotate\": 0,\r\n        \"margin\": 8,\r\n        \"formatter\": \"{value}\",\r\n        \"showMinLabel\": null,\r\n        \"showMaxLabel\": null,\r\n        \"hideOverlap\": false,\r\n        \"fontStyle\": \"normal\",\r\n        \"fontWeight\": \"normal\",\r\n        \"fontFamily\": \"sans-serif\",\r\n        \"fontSize\": 12,\r\n        \"lineHeight\": 12,\r\n        \"backgroundColor\": \"transparent\",\r\n        \"borderWidth\": 0,\r\n        \"borderType\": \"solid\",\r\n        \"borderDashOffset\": 0,\r\n        \"borderRadius\": 0,\r\n        \"padding\": 0,\r\n        \"shadowColor\": \"transparent\",\r\n        \"shadowBlur\": 0,\r\n        \"shadowOffsetX\": 0,\r\n        \"shadowOffsetY\": 0,\r\n        \"textBorderColor\": null,\r\n        \"textBorderWidth\": 0,\r\n        \"textBorderType\": \"solid\",\r\n        \"textBorderDashOffset\": 0,\r\n        \"textShadowColor\": \"transparent\",\r\n        \"textShadowBlur\": 0,\r\n        \"textShadowOffsetX\": 0,\r\n        \"textShadowOffsetY\": 0,\r\n        \"overflow\": \"truncate\",\r\n        \"ellipsis\": \"...\"\r\n      },\r\n      \"zlevel\": 0,\r\n      \"z\": 0\r\n    }],\r\n  \"series\": [\r\n    {\r\n      \"type\": \"bar\",\r\n      \"name\": \"NOPM\",\r\n      \"colorBy\": \"series\",\r\n      \"legendHoverLink\": true,\r\n      \"coordinateSystem\": \"cartesian2d\",\r\n      \"roundCap\": false,\r\n      \"showBackground\": false,\r\n      \"itemStyle\": {\r\n        \"color\": \"#00CC00\",\r\n        \"borderColor\": \"rgb(0, 0, 0)\",\r\n        \"borderType\": \"solid\",\r\n        \"borderDashOffset\": 0,\r\n        \"borderCap\": \"butt\",\r\n        \"borderJoin\": \"bevel\",\r\n        \"borderMiterLimit\": 10,\r\n        \"opacity\": 0.90\r\n      },\r\n      \"sampling\": \"max\",\r\n      \"cursor\": \"pointer\",\r\n      \"barMinWidth\": null,\r\n      \"barCategoryGap\": \"20%\",\r\n      \"large\": false,\r\n      \"largeThreshold\": 400,\r\n      \"data\": [46050],\r\n      \"zlevel\": 0,\r\n      \"z\": 2,\r\n      \"silent\": false\r\n    },\r\n    {\r\n      \"type\": \"bar\",\r\n      \"name\": \"TPM\",\r\n      \"colorBy\": \"series\",\r\n      \"legendHoverLink\": true,\r\n      \"coordinateSystem\": \"cartesian2d\",\r\n      \"roundCap\": false,\r\n      \"showBackground\": false,\r\n      \"itemStyle\": {\r\n        \"color\": \"#66ff66\",\r\n        \"borderColor\": \"rgb(0, 0, 0)\",\r\n        \"borderType\": \"solid\",\r\n        \"borderDashOffset\": 0,\r\n        \"borderCap\": \"butt\",\r\n        \"borderJoin\": \"bevel\",\r\n        \"borderMiterLimit\": 10,\r\n        \"opacity\": 0.90\r\n      },\r\n      \"sampling\": \"max\",\r\n      \"cursor\": \"pointer\",\r\n      \"barMinWidth\": null,\r\n      \"barCategoryGap\": \"20%\",\r\n      \"large\": false,\r\n      \"largeThreshold\": 400,\r\n      \"data\": [202715],\r\n      \"zlevel\": 0,\r\n      \"z\": 2,\r\n      \"silent\": false\r\n    }\r\n  ]\r\n}\r\nchart_a3a1672ce6814324bd80d8b84cff1557.setOption(option_a3a1672ce6814324bd80d8b84cff1557);\r\n    &lt;\/script&gt;\r\n  &lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<h3>Summary<\/h3>\n<p>In this post we have introduced new HammerDB v4.8 functionality for viewing workload related results and configuration from a central location.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In HammerDB v4.7 introduced the concept of Jobs to the CLI, a central repository to store workload output, configuration and results. v4.8 extends this functionality to the GUI and adds a Web Service to view and visualize this Job related data. Turning Jobs Off and On Of course one of the most important aspects is &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.hammerdb.com\/blog\/uncategorized\/hammerdb-v4-8-new-features-viewing-your-benchmark-results-with-the-hammerdb-web-service\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;HammerDB v4.8 New Features : Viewing your Benchmark results with the HammerDB Web Service&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"ppma_author":[5],"class_list":["post-1417","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"authors":[{"term_id":5,"user_id":2,"is_guest":0,"slug":"hammerdb","display_name":"HammerDB","avatar_url":{"url":"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2018\/10\/logo-white.png","url2x":"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2018\/10\/logo-white.png"},"author_category":"","user_url":"http:\/\/www.hammerdb.com","last_name":"","first_name":"","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/comments?post=1417"}],"version-history":[{"count":15,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1417\/revisions"}],"predecessor-version":[{"id":1453,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1417\/revisions\/1453"}],"wp:attachment":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/media?parent=1417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/categories?post=1417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/tags?post=1417"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=1417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}