{"id":1296,"date":"2022-12-14T18:14:01","date_gmt":"2022-12-14T18:14:01","guid":{"rendered":"https:\/\/www.hammerdb.com\/blog\/?p=1296"},"modified":"2022-12-14T18:15:16","modified_gmt":"2022-12-14T18:15:16","slug":"how-to-deploy-hammerdb-cli-fast-with-docker","status":"publish","type":"post","link":"https:\/\/www.hammerdb.com\/blog\/uncategorized\/how-to-deploy-hammerdb-cli-fast-with-docker\/","title":{"rendered":"How to deploy HammerDB CLI fast with Docker"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>The TPC publishes an official Docker image on Docker Hub to enable the rapid deployment and testing of databases with HammerDB.\u00a0 This image includes example scripts to build schemas and test your databases with a single command.<\/p>\n<p>In this post, we will show an example of using Docker to deploy the HammerDB command line and test a database with minimal effort. Our Linux test system is running a MariaDB 10.10 database with Docker installed, so we are going to use Docker to pull the HammerDB image and run the test scripts to measure the database performance.<\/p>\n<h3>Docker Hub<\/h3>\n<p>The image can be found on Docker Hub under the tpcorg account.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/docker.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1298\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/docker.png\" alt=\"\" width=\"508\" height=\"539\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/docker.png 508w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/docker-283x300.png 283w\" sizes=\"auto, (max-width: 508px) 100vw, 508px\" \/><\/a><\/p>\n<h3>Docker Pull<\/h3>\n<p>On a system with docker installed, use docker pull tpcorg\/hammerdb to pull the latest image.<\/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@REDPOLL:~$ sudo docker pull tpcorg\/hammerdb\r\n[sudo] password for hammerdb: \r\nUsing default tag: latest\r\nlatest: Pulling from tpcorg\/hammerdb\r\n846c0b181fff: Pull complete \r\n10b4eb41ac75: Pull complete \r\n9021d634457d: Pull complete \r\nb365f60d978b: Pull complete \r\n215f30832a93: Pull complete \r\n689ecb6b15e8: Pull complete \r\nd6464f987fdc: Pull complete \r\n08589f44a894: Pull complete \r\na3fcc3045ce7: Pull complete \r\nf8ceb6609f8d: Pull complete \r\n48e559ac800e: Pull complete \r\n4f4fb700ef54: Pull complete \r\nf9b42217af04: Pull complete \r\nDigest: sha256:69bf8b29a19855bb63c7e5266afeedbbb99540cef2a96c6b6a33e6747b3aa38b\r\nStatus: Downloaded newer image for tpcorg\/hammerdb:latest\r\ndocker.io\/tpcorg\/hammerdb:latest<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Use docker run to run the HammerDB container.<\/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@REDPOLL:~$ sudo docker run --network=host -it --name hammerdb tpcorg\/hammerdb bash\r\nroot@REDPOLL:\/home\/hammerdb\/HammerDB-4.6#<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Note that all libraries are pre-installed, so we are ready to start running HammerDB.<\/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\">root@REDPOLL:\/home\/hammerdb\/HammerDB-4.6# .\/hammerdbcli \r\nHammerDB CLI v4.6\r\nCopyright (C) 2003-2022 Steve Shaw\r\nType \"help\" for a list of commands\r\nInitialized new SQLite on-disk database \/tmp\/hammer.DB\r\nhammerdb&gt;librarycheck\r\nChecking database library for Oracle\r\nSuccess ... loaded library Oratcl for Oracle\r\nChecking database library for MSSQLServer\r\nSuccess ... loaded library tdbc::odbc for MSSQLServer\r\nChecking database library for Db2\r\nError: failed to load db2tcl - couldn't load file \"\/home\/hammerdb\/HammerDB-4.6\/lib\/db2tcl2.0.1\/libdb2tcl.so\": libdb2.so.1: cannot open shared object file: No such file or directory\r\nEnsure that Db2 client libraries are installed and the location in the LD_LIBRARY_PATH environment variable\r\nChecking database library for MySQL\r\nSuccess ... loaded library mysqltcl for MySQL\r\nChecking database library for PostgreSQL\r\nSuccess ... loaded library Pgtcl for PostgreSQL\r\nChecking database library for MariaDB\r\nSuccess ... loaded library mariatcl for MariaDB<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<h3>Database Configuration<\/h3>\n<p>We have run Docker to enable to access the host network so we start the MariaDB on the host with the host bind_address (in this case the system name is redpoll) and the default port of 3306 and start the 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\">[mysqld]\r\nskip-log-bin\r\ndatadir=\/home\/hammerdb\/mariadb-10.10.2-linux-systemd-x86_64\/data\r\ndefault_authentication_plugin=mysql_native_password\r\nsocket=\/tmp\/mariadb.sock\r\nport=3306\r\nlog-error=\/tmp\/mariadb.log\r\nbind_address=redpoll\r\n...\r\n\r\nhammerdb@REDPOLL:~\/mariadb-10.10.2-linux-systemd-x86_64$ bin\/mysqld --defaults-file=.\/my.cnf --user=hammerdb\r\n2022-12-14 12:14:05 0 [Note] bin\/mysqld (server 10.10.2-MariaDB) starting as process 4483 ...<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>We can check on the host the IP address of the Docker container,\u00a0 in this case 172.17.0.1 and allow access to HammerDB from the container as the root user.<\/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\">root@REDPOLL:\/home\/hammerdb\/mariadb-10.10.2-linux-systemd-x86_64# ip addr show docker0\r\n3: docker0: &lt;NO-CARRIER,BROADCAST,MULTICAST,UP&gt; mtu 1500 qdisc noqueue state DOWN group default \r\n    link\/ether 02:42:a7:d9:56:a9 brd ff:ff:ff:ff:ff:ff\r\n    inet 172.17.0.1\/16 brd 172.17.255.255 scope global docker0\r\n       valid_lft forever preferred_lft forever\r\n\r\nMariaDB [(none)]&gt; select password('maria');\r\n+-------------------------------------------+\r\n| password('maria')                         |\r\n+-------------------------------------------+\r\n| *8061C323A725701555411A7E18421F077A840CD7 |\r\n+-------------------------------------------+\r\n1 row in set (0.000 sec)\r\n\r\nMariaDB [(none)]&gt; create user 'root'@'172.17.0.1' identified by password '*8061C323A725701555411A7E18421F077A840CD7';\r\nQuery OK, 0 rows affected (0.002 sec)\r\nMariaDB [(none)]&gt;<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<h3>Script Configuration<\/h3>\n<p>Under the HammerDB home directory is a scripts directory containing example scripts to test all supported databases except for Db2 in both tcl and python format for both TPROC-C and TPROC-H workloads. There is a driver script that can be used to build, test, delete and query the results of a workload with a single script. The scripts are available in both Python and Tcl formats.<\/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\">root@REDPOLL:\/home\/hammerdb\/HammerDB-4.6# ls -ltR scripts\/\r\nscripts\/:\r\ntotal 8\r\ndrwxr-xr-x 8 root root 4096 Dec 13 22:31 python\r\ndrwxr-xr-x 8 root root 4096 Dec 13 22:31 tcl\r\nscripts\/python:\r\ntotal 24\r\ndrwxr-xr-x 2 root root 4096 Dec 13 22:31 generic\r\ndrwxr-xr-x 4 root root 4096 Dec 13 22:31 maria\r\ndrwxr-xr-x 4 root root 4096 Dec 13 22:31 mssqls\r\ndrwxr-xr-x 4 root root 4096 Dec 13 22:31 mysql\r\ndrwxr-xr-x 4 root root 4096 Dec 13 22:31 oracle\r\ndrwxr-xr-x 4 root root 4096 Dec 13 22:31 postgres\r\n\r\nroot@REDPOLL:\/home\/hammerdb\/HammerDB-4.6\/scripts\/tcl\/maria\/tprocc# ls\r\nmaria_tprocc.sh \r\nmaria_tprocc_deleteschema.tcl  \r\nmaria_tprocc_run.tcl\r\nmaria_tprocc_buildschema.tcl  \r\nmaria_tprocc_result.tcl<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Update the scripts to be used with the connection settings for the database to be tested. In this case, the MariaDB database is running on port 3306 on host redpoll.\u00a0 The socket will not be used as the hostname specified is not &#8220;localhost&#8221;. The connection parameters for all scripts is all we need to change.<\/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\">!\/bin\/tclsh\r\n# maintainer: Pooja Jain\r\nputs \"SETTING CONFIGURATION\"\r\ndbset db maria\r\ndbset bm TPC-C\r\ndiset connection maria_host redpoll\r\ndiset connection maria_port 3306\r\ndiset connection maria_socket \/tmp\/mariadb.sock\r\n...<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>By default the schema will build 5 x the number of warehouses of the CPUs on the system.<\/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\">set vu [ numberOfCPUs ]\r\nset warehouse [ expr {$vu * 5} ]\r\ndiset tpcc maria_count_ware $warehouse<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>and the test will run with the number of Virtual Users equivalent to the number of CPUs.<\/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\">vuset vu vcpu<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<h3>Run the test<\/h3>\n<p>We can now run the main driver script from the HammerDB home directory to build the schema, run the test, delete the schema and then print the results of the test as follows:<\/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\">root@REDPOLL:\/home\/hammerdb\/HammerDB-4.6# .\/scripts\/tcl\/maria\/tprocc\/maria_tprocc.sh \r\nBUILD HAMMERDB SCHEMA \r\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- \r\nHammerDB CLI v4.6 \r\nCopyright (C) 2003-2022 Steve Shaw \r\nType \"help\" for a list of commands \r\nInitialized SQLite on-disk database \/home\/hammerdb\/HammerDB-4.6\/TMP\/hammer.DB using existing tables (229,376 KB) \r\nSETTING CONFIGURATION \r\nDatabase set to MariaDB \r\nBenchmark set to TPC-C for MariaDB \r\nValue redpoll for connection:maria_host is the same as existing value redpoll, no change made \r\nValue 3306 for connection:maria_port is the same as existing value 3306, no change made \r\nValue \/tmp\/mariadb.sock for connection:maria_socket is the same as existing value \/tmp\/mariadb.sock, no change made \r\nValue 20 for tpcc:maria_count_ware is the same as existing value 20, no change made \r\nValue 4 for tpcc:maria_num_vu is the same as existing value 4, no change made \r\nValue root for tpcc:maria_user is the same as existing value root, no change made \r\nValue maria for tpcc:maria_pass is the same as existing value maria, no change made \r\nValue tpcc for tpcc:maria_dbase is the same as existing value tpcc, no change made \r\nValue innodb for tpcc:maria_storage_engine is the same as existing value innodb, no change made \r\nValue false for tpcc:maria_partition is the same as existing value false, no change made \r\nSCHEMA BUILD STARTED \r\nScript cleared \r\nBuilding 20 Warehouses with 5 Virtual Users, 4 active + 1 Monitor VU(dict value maria_num_vu is set to 4) \r\nReady to create a 20 Warehouse MariaDB TPROC-C schema \r\nin host REDPOLL:3306 under user ROOT in database TPCC with storage engine INNODB? \r\nEnter yes or no: replied yes \r\nVuser 1 created - WAIT IDLE \r\nVuser 2 created - WAIT IDLE \r\nVuser 3 created - WAIT IDLE \r\nVuser 4 created - WAIT IDLE \r\nVuser 5 created - WAIT IDLE \r\nVuser 1:RUNNING \r\nVuser 1:Monitor Thread \r\nVuser 1:CREATING TPCC SCHEMA \r\nVuser 1:Ssl_cipher  \r\nVuser 1:CREATING DATABASE tpcc \r\nVuser 1:CREATING TPCC TABLES \r\nVuser 1:Loading Item \r\nVuser 2:RUNNING \r\nVuser 2:Worker Thread \r\nVuser 2:Waiting for Monitor Thread... \r\nVuser 2:Ssl_cipher  \r\nVuser 2:Loading 5 Warehouses start:1 end:5 \r\nVuser 2:Start:Wed Dec 14 13:47:59 +0000 2022 \r\nVuser 2:Loading Warehouse \r\nVuser 2:Loading Stock Wid=1 \r\nVuser 3:RUNNING \r\nVuser 3:Worker Thread \r\nVuser 3:Waiting for Monitor Thread... \r\nVuser 3:Ssl_cipher  \r\nVuser 3:Loading 5 Warehouses start:6 end:10 \r\nVuser 5:Loading Warehouse \r\nVuser 5:Loading Stock Wid=16 \r\n...\r\nVuser 2:FINISHED SUCCESS \r\nVuser 3:...2000 \r\nVuser 3:...3000 \r\nVuser 3:Orders Done \r\nVuser 3:End:Wed Dec 14 13:51:05 +0000 2022 \r\nVuser 3:FINISHED SUCCESS \r\nVuser 1:Workers: 0 Active 4 Done \r\nVuser 1:CREATING TPCC STORED PROCEDURES \r\nVuser 1:GATHERING SCHEMA STATISTICS \r\nVuser 1:TPCC SCHEMA COMPLETE \r\nVuser 1:FINISHED SUCCESS \r\nALL VIRTUAL USERS COMPLETE \r\nSCHEMA BUILD COMPLETED \r\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- \r\nRUN HAMMERDB TEST \r\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- \r\nHammerDB CLI v4.6 \r\nCopyright (C) 2003-2022 Steve Shaw \r\nType \"help\" for a list of commands \r\nInitialized SQLite on-disk database \/home\/hammerdb\/HammerDB-4.6\/TMP\/hammer.DB using existing tables (372,736 KB) \r\nSETTING CONFIGURATION \r\nDatabase set to MariaDB \r\nBenchmark set to TPC-C for MariaDB \r\nValue redpoll for connection:maria_host is the same as existing value redpoll, no change made \r\nValue 3306 for connection:maria_port is the same as existing value 3306, no change made \r\nValue \/tmp\/mariadb.sock for connection:maria_socket is the same as existing value \/tmp\/mariadb.sock, no change made \r\nValue root for tpcc:maria_user is the same as existing value root, no change made \r\nValue maria for tpcc:maria_pass is the same as existing value maria, no change made \r\nValue tpcc for tpcc:maria_dbase is the same as existing value tpcc, no change made \r\nValue timed for tpcc:maria_driver is the same as existing value timed, no change made \r\nValue 2 for tpcc:maria_rampup is the same as existing value 2, no change made \r\nValue 5 for tpcc:maria_duration is the same as existing value 5, no change made \r\nValue true for tpcc:maria_allwarehouse is the same as existing value true, no change made \r\nValue true for tpcc:maria_timeprofile is the same as existing value true, no change made \r\nScript loaded, Type \"print script\" to view \r\nTEST STARTED \r\nVuser 1 created MONITOR - WAIT IDLE \r\nVuser 2 created - WAIT IDLE \r\nVuser 3 created - WAIT IDLE \r\nVuser 4 created - WAIT IDLE \r\nVuser 5 created - WAIT IDLE \r\n5 Virtual Users Created with Monitor VU \r\nTransaction Counter Started \r\nTransaction Counter thread running with threadid:tid0x7fec51ffb700 \r\n0 MariaDB tpm \r\nVuser 1:RUNNING \r\nVuser 1:Initializing xtprof time profiler \r\nVuser 1:Ssl_cipher  \r\nVuser 1:Beginning rampup time of 2 minutes \r\nVuser 2:RUNNING \r\nVuser 2:Initializing xtprof time profiler \r\nVuser 3:RUNNING \r\nVuser 2:Ssl_cipher  \r\nVuser 3:Initializing xtprof time profiler \r\nVuser 2:VU 2 : Assigning WID=1 based on VU count 4, Warehouses = 20 (1 out of 5) \r\nVuser 3:Ssl_cipher  \r\nVuser 2:VU 2 : Assigning WID=5 based on VU count 4, Warehouses = 20 (2 out of 5) \r\nVuser 3:VU 3 : Assigning WID=2 based on VU count 4, Warehouses = 20 (1 out of 5) \r\nVuser 2:VU 2 : Assigning WID=9 based on VU count 4, Warehouses = 20 (3 out of 5) \r\nVuser 3:VU 3 : Assigning WID=6 based on VU count 4, Warehouses = 20 (2 out of 5) \r\nVuser 2:VU 2 : Assigning WID=13 based on VU count 4, Warehouses = 20 (4 out of 5) \r\nVuser 3:VU 3 : Assigning WID=10 based on VU count 4, Warehouses = 20 (3 out of 5) \r\nVuser 2:VU 2 : Assigning WID=17 based on VU count 4, Warehouses = 20 (5 out of 5) \r\nVuser 3:VU 3 : Assigning WID=14 based on VU count 4, Warehouses = 20 (4 out of 5) \r\nVuser 2:Processing 10000000 transactions with output suppressed... \r\nVuser 3:VU 3 : Assigning WID=18 based on VU count 4, Warehouses = 20 (5 out of 5) \r\nVuser 3:Processing 10000000 transactions with output suppressed... \r\nVuser 4:RUNNING \r\nVuser 4:Initializing xtprof time profiler \r\nVuser 4:Ssl_cipher  \r\nVuser 4:VU 4 : Assigning WID=3 based on VU count 4, Warehouses = 20 (1 out of 5) \r\nVuser 4:VU 4 : Assigning WID=7 based on VU count 4, Warehouses = 20 (2 out of 5) \r\nVuser 4:VU 4 : Assigning WID=11 based on VU count 4, Warehouses = 20 (3 out of 5) \r\nVuser 4:VU 4 : Assigning WID=15 based on VU count 4, Warehouses = 20 (4 out of 5) \r\nVuser 4:VU 4 : Assigning WID=19 based on VU count 4, Warehouses = 20 (5 out of 5) \r\nVuser 4:Processing 10000000 transactions with output suppressed... \r\nVuser 5:RUNNING \r\nVuser 5:Initializing xtprof time profiler \r\nVuser 5:Ssl_cipher  \r\nVuser 5:VU 5 : Assigning WID=4 based on VU count 4, Warehouses = 20 (1 out of 5) \r\nVuser 5:VU 5 : Assigning WID=8 based on VU count 4, Warehouses = 20 (2 out of 5) \r\nVuser 5:VU 5 : Assigning WID=12 based on VU count 4, Warehouses = 20 (3 out of 5) \r\nVuser 5:VU 5 : Assigning WID=16 based on VU count 4, Warehouses = 20 (4 out of 5) \r\nVuser 5:VU 5 : Assigning WID=20 based on VU count 4, Warehouses = 20 (5 out of 5) \r\nVuser 5:Processing 10000000 transactions with output suppressed... \r\n54690 MariaDB tpm \r\n86406 MariaDB tpm \r\n63144 MariaDB tpm \r\n55824 MariaDB tpm \r\n90012 MariaDB tpm \r\nVuser 1:Rampup 1 minutes complete ... \r\n90228 MariaDB tpm \r\n93984 MariaDB tpm \r\n79008 MariaDB tpm \r\n67278 MariaDB tpm \r\n62952 MariaDB tpm \r\n93834 MariaDB tpm \r\n107478 MariaDB tpm \r\nVuser 1:Rampup 2 minutes complete ... \r\nVuser 1:Rampup complete, Taking start Transaction Count. \r\nVuser 1:Timing test period of 5 in minutes \r\n104154 MariaDB tpm \r\n95004 MariaDB tpm \r\n82794 MariaDB tpm \r\n83328 MariaDB tpm \r\n74424 MariaDB tpm \r\n43962 MariaDB tpm \r\nVuser 1:1 ..., \r\n105270 MariaDB tpm \r\n37362 MariaDB tpm \r\n12816 MariaDB tpm \r\n5304 MariaDB tpm \r\n10470 MariaDB tpm \r\n6084 MariaDB tpm \r\nVuser 1:2 ..., \r\n5730 MariaDB tpm \r\n6048 MariaDB tpm \r\n6768 MariaDB tpm \r\n9438 MariaDB tpm \r\n11280 MariaDB tpm \r\n10428 MariaDB tpm \r\nVuser 1:3 ..., \r\n17022 MariaDB tpm \r\n14310 MariaDB tpm \r\n19374 MariaDB tpm \r\n22326 MariaDB tpm \r\n16698 MariaDB tpm \r\n20100 MariaDB tpm \r\n21000 MariaDB tpm \r\nVuser 1:4 ..., \r\n10902 MariaDB tpm \r\n14898 MariaDB tpm \r\n60228 MariaDB tpm \r\n37632 MariaDB tpm \r\n50778 MariaDB tpm \r\n34044 MariaDB tpm \r\nVuser 1:5 ..., \r\nVuser 1:Test complete, Taking end Transaction Count. \r\nVuser 1:4 Active Virtual Users configured \r\nVuser 1:TEST RESULT : System achieved 15199 NOPM from 35354 MariaDB TPM \r\nVuser 1:Gathering timing data from Active Virtual Users... \r\n48096 MariaDB tpm \r\nVuser 5:FINISHED SUCCESS \r\nVuser 2:FINISHED SUCCESS \r\nVuser 3:FINISHED SUCCESS \r\nVuser 4:FINISHED SUCCESS \r\nVuser 1:Calculating timings... \r\n8226 MariaDB tpm \r\nVuser 1:Writing timing data to \/home\/hammerdb\/HammerDB-4.6\/TMP\/hdbxtprofile.log \r\n0 MariaDB tpm \r\n0 MariaDB tpm \r\n0 MariaDB tpm \r\n0 MariaDB tpm \r\n0 MariaDB tpm \r\n0 MariaDB tpm \r\n0 MariaDB tpm \r\n0 MariaDB tpm \r\n0 MariaDB tpm \r\nVuser 1:FINISHED SUCCESS \r\nALL VIRTUAL USERS COMPLETE \r\n0 MariaDB tpm \r\nvudestroy success \r\nTransaction Counter thread running with threadid:tid0x7fec51ffb700 \r\nStopping Transaction Counter \r\nTEST COMPLETE \r\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- \r\nDROP HAMMERDB SCHEMA \r\nHammerDB CLI v4.6 \r\nCopyright (C) 2003-2022 Steve Shaw \r\nType \"help\" for a list of commands \r\nInitialized SQLite on-disk database \/home\/hammerdb\/HammerDB-4.6\/TMP\/hammer.DB using existing tables (397,312 KB) \r\nSETTING CONFIGURATION \r\nDatabase set to MariaDB \r\nBenchmark set to TPC-C for MariaDB \r\nValue redpoll for connection:maria_host is the same as existing value redpoll, no change made \r\nValue 3306 for connection:maria_port is the same as existing value 3306, no change made \r\nValue \/tmp\/mariadb.sock for connection:maria_socket is the same as existing value \/tmp\/mariadb.sock, no change made \r\nValue root for tpcc:maria_user is the same as existing value root, no change made \r\nValue maria for tpcc:maria_pass is the same as existing value maria, no change made \r\nValue tpcc for tpcc:maria_dbase is the same as existing value tpcc, no change made \r\n DROP SCHEMA STARTED \r\nScript cleared \r\nDeleting schema with 1 Virtual User \r\nDo you want to delete the TPCC TPROC-C schema \r\n in host REDPOLL:3306 under user ROOT? \r\nEnter yes or no: replied yes \r\nVuser 1 created - WAIT IDLE \r\nVuser 1:RUNNING \r\nVuser 1:Ssl_cipher  \r\nDROP SCHEMA COMPLETED \r\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- \r\nHAMMERDB RESULT \r\nHammerDB CLI v4.6 \r\nCopyright (C) 2003-2022 Steve Shaw \r\nType \"help\" for a list of commands \r\nInitialized SQLite on-disk database \/home\/hammerdb\/HammerDB-4.6\/TMP\/hammer.DB using existing tables (397,312 KB) \r\nTRANSACTION RESPONSE TIMES \r\n{ \r\n  \"DELIVERY\": { \r\n    \"elapsed_ms\": \"439561.0\", \r\n    \"calls\": \"3320\", \r\n    \"min_ms\": \"4.383\", \r\n    \"avg_ms\": \"59.972\", \r\n    \"max_ms\": \"77608.65\", \r\n    \"total_ms\": \"199106.945\", \r\n    \"p99_ms\": \"307.374\", \r\n    \"p95_ms\": \"10.461\", \r\n    \"p50_ms\": \"5.74\", \r\n    \"sd\": \"1684200.807\", \r\n    \"ratio_pct\": \"45.476\" \r\n  }, \r\n  \"NEWORD\": { \r\n    \"elapsed_ms\": \"439561.0\", \r\n    \"calls\": \"33945\", \r\n    \"min_ms\": \"1.227\", \r\n    \"avg_ms\": \"5.016\", \r\n    \"max_ms\": \"17419.641\", \r\n    \"total_ms\": \"170261.191\", \r\n    \"p99_ms\": \"8.509\", \r\n    \"p95_ms\": \"4.596\", \r\n    \"p50_ms\": \"2.503\", \r\n    \"sd\": \"105049.036\", \r\n    \"ratio_pct\": \"38.888\" \r\n  }, \r\n  \"PAYMENT\": { \r\n    \"elapsed_ms\": \"439561.0\", \r\n    \"calls\": \"33696\", \r\n    \"min_ms\": \"0.602\", \r\n    \"avg_ms\": \"1.512\", \r\n    \"max_ms\": \"2687.342\", \r\n    \"total_ms\": \"50964.941\", \r\n    \"p99_ms\": \"3.443\", \r\n    \"p95_ms\": \"1.773\", \r\n    \"p50_ms\": \"1.004\", \r\n    \"sd\": \"23559.832\", \r\n    \"ratio_pct\": \"11.64\" \r\n  }, \r\n  \"OSTAT\": { \r\n    \"elapsed_ms\": \"439561.0\", \r\n    \"calls\": \"3393\", \r\n    \"min_ms\": \"0.454\", \r\n    \"avg_ms\": \"3.023\", \r\n    \"max_ms\": \"1321.03\", \r\n    \"total_ms\": \"10255.874\", \r\n    \"p99_ms\": \"3.218\", \r\n    \"p95_ms\": \"1.519\", \r\n    \"p50_ms\": \"0.868\", \r\n    \"sd\": \"44465.804\", \r\n    \"ratio_pct\": \"2.342\" \r\n  }, \r\n  \"SLEV\": { \r\n    \"elapsed_ms\": \"439561.0\", \r\n    \"calls\": \"3310\", \r\n    \"min_ms\": \"0.82\", \r\n    \"avg_ms\": \"1.352\", \r\n    \"max_ms\": \"184.051\", \r\n    \"total_ms\": \"4476.381\", \r\n    \"p99_ms\": \"3.524\", \r\n    \"p95_ms\": \"1.995\", \r\n    \"p50_ms\": \"1.135\", \r\n    \"sd\": \"3229.144\", \r\n    \"ratio_pct\": \"1.022\" \r\n  } \r\n} \r\n \r\nTRANSACTION COUNT \r\n{\"MariaDB tpm\": { \r\n    \"0\": \"2022-12-14 14:00:23\", \r\n    \"54690\": \"2022-12-14 13:51:19\", \r\n    \"86406\": \"2022-12-14 13:51:29\", \r\n    \"63144\": \"2022-12-14 13:51:39\", \r\n    \"55824\": \"2022-12-14 13:51:49\", \r\n    \"90012\": \"2022-12-14 13:51:59\", \r\n    \"90228\": \"2022-12-14 13:52:10\", \r\n    \"93984\": \"2022-12-14 13:52:19\", \r\n    \"79008\": \"2022-12-14 13:52:29\", \r\n    \"67278\": \"2022-12-14 13:52:39\", \r\n    \"62952\": \"2022-12-14 13:52:49\", \r\n    \"93834\": \"2022-12-14 13:52:59\", \r\n    \"107478\": \"2022-12-14 13:53:09\", \r\n    \"104154\": \"2022-12-14 13:53:19\", \r\n    \"95004\": \"2022-12-14 13:53:29\", \r\n    \"82794\": \"2022-12-14 13:53:39\", \r\n    \"83328\": \"2022-12-14 13:53:49\", \r\n    \"74424\": \"2022-12-14 13:53:59\", \r\n    \"43962\": \"2022-12-14 13:54:09\", \r\n    \"105270\": \"2022-12-14 13:54:19\", \r\n    \"37362\": \"2022-12-14 13:54:29\", \r\n    \"12816\": \"2022-12-14 13:54:39\", \r\n    \"5304\": \"2022-12-14 13:54:49\", \r\n    \"10470\": \"2022-12-14 13:54:59\", \r\n    \"6084\": \"2022-12-14 13:55:09\", \r\n    \"5730\": \"2022-12-14 13:55:19\", \r\n    \"6048\": \"2022-12-14 13:55:29\", \r\n    \"6768\": \"2022-12-14 13:55:39\", \r\n    \"9438\": \"2022-12-14 13:55:49\", \r\n    \"11280\": \"2022-12-14 13:56:00\", \r\n    \"10428\": \"2022-12-14 13:56:10\", \r\n    \"17022\": \"2022-12-14 13:56:22\", \r\n    \"14310\": \"2022-12-14 13:56:30\", \r\n    \"19374\": \"2022-12-14 13:56:40\", \r\n    \"22326\": \"2022-12-14 13:56:50\", \r\n    \"16698\": \"2022-12-14 13:57:00\", \r\n    \"20100\": \"2022-12-14 13:57:10\", \r\n    \"21000\": \"2022-12-14 13:57:20\", \r\n    \"10902\": \"2022-12-14 13:57:30\", \r\n    \"14898\": \"2022-12-14 13:57:40\", \r\n    \"60228\": \"2022-12-14 13:57:50\", \r\n    \"37632\": \"2022-12-14 13:58:00\", \r\n    \"50778\": \"2022-12-14 13:58:10\", \r\n    \"34044\": \"2022-12-14 13:58:20\", \r\n    \"48096\": \"2022-12-14 13:58:32\", \r\n    \"8226\": \"2022-12-14 13:58:45\" \r\n  }} \r\n \r\nHAMMERDB RESULT \r\n[ \r\n  \"6399D4CD5EFC03E233239383\", \r\n  \"2022-12-14 13:51:09\", \r\n  \"4 Active Virtual Users configured\", \r\n  \"TEST RESULT : System achieved 15199 NOPM from 35354 MariaDB TPM\" \r\n]<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Note that we captured the job timings, transaction count and test result at the end of the test.<\/p>\n<h3>Results storage<\/h3>\n<p>HammerDB will export a TMP directory in the HammerDB home directory for the storage of configuration databases and a text output of results.<\/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\">root@REDPOLL:\/home\/hammerdb\/HammerDB-4.6\/TMP# ls\r\ndatabase.db  hammer.DB-journal                          mariadb.db      postgresql.db\r\ndb2.db       hdbxtprofile.log                           mssqlserver.db\r\ngeneric.db   maria_tprocc                               mysql.db\r\nhammer.DB    maria_tprocc_6399D4CD5EFC03E233239383.out  oracle.db<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>However with the jobs command, you can also query the results directly from the repository.<\/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 \"6399D4CD5EFC03E233239383\" result\r\n[\r\n  \"6399D4CD5EFC03E233239383\",\r\n  \"2022-12-14 13:51:09\",\r\n  \"4 Active Virtual Users configured\",\r\n  \"TEST RESULT : System achieved 15199 NOPM from 35354 MariaDB TPM\"\r\n]<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<h3>Stopping and Starting Docker<\/h3>\n<p>Use the Docker, stop, start and attach commands to run the HammerDB container when required.<\/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\">root@REDPOLL:~# docker stop hammerdb\r\nhammerdb\r\nroot@REDPOLL:~# docker start hammerdb\r\nhammerdb\r\nroot@REDPOLL:~# docker attach hammerdb\r\nroot@REDPOLL:\/home\/hammerdb\/HammerDB-4.6#<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<h3>Summary<\/h3>\n<p>In this post we have used the offical HammerDB docker container from tpcorg to rapidly deploy HammerDB and run the included example scripts to gain an insight into database performance on our host system. You can also run HammerDB interactively or with your own scripts to gain further insight.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; The TPC publishes an official Docker image on Docker Hub to enable the rapid deployment and testing of databases with HammerDB.\u00a0 This image includes example scripts to build schemas and test your databases with a single command. In this post, we will show an example of using Docker to deploy the HammerDB command line &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.hammerdb.com\/blog\/uncategorized\/how-to-deploy-hammerdb-cli-fast-with-docker\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;How to deploy HammerDB CLI fast with Docker&#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-1296","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\/1296","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=1296"}],"version-history":[{"count":8,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1296\/revisions"}],"predecessor-version":[{"id":1305,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1296\/revisions\/1305"}],"wp:attachment":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/media?parent=1296"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/categories?post=1296"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/tags?post=1296"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=1296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}