{"id":1361,"date":"2023-03-27T15:44:09","date_gmt":"2023-03-27T15:44:09","guid":{"rendered":"https:\/\/www.hammerdb.com\/blog\/?p=1361"},"modified":"2023-03-27T15:44:09","modified_gmt":"2023-03-27T15:44:09","slug":"hammerdb-v4-7-new-features-pt-3-lightweight-docker-images-for-rapid-testing","status":"publish","type":"post","link":"https:\/\/www.hammerdb.com\/blog\/uncategorized\/hammerdb-v4-7-new-features-pt-3-lightweight-docker-images-for-rapid-testing\/","title":{"rendered":"HammerDB v4.7 New Features Pt 3: Lightweight Docker Images for rapid testing"},"content":{"rendered":"<p>HammerDB v4.5 introduced a Dockerfile and Docker Images to pull from <a href=\"https:\/\/hub.docker.com\/r\/tpcorg\/hammerdb\">Docker Hub<\/a> for rapid deployment of HammerDB with builds already including third-party database libraries.<\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"ydFFPiLV65\"><p><a href=\"https:\/\/www.hammerdb.com\/blog\/uncategorized\/how-to-deploy-hammerdb-cli-fast-with-docker\/\">How to deploy HammerDB CLI fast with Docker<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;How to deploy HammerDB CLI fast with Docker&#8221; &#8212; HammerDB Blog\" src=\"https:\/\/www.hammerdb.com\/blog\/uncategorized\/how-to-deploy-hammerdb-cli-fast-with-docker\/embed\/#?secret=2YPrpxx8N9#?secret=ydFFPiLV65\" data-secret=\"ydFFPiLV65\" width=\"525\" height=\"296\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p>HammerDB v4.7 introduces more lightweight database specific Docker Images, so if you only want to run benchmarks against a specific database you can go from having no benchmarking environment to reviewing your results in as little as 3 commands.<\/p>\n<p>In this example, we will use the PostgreSQL Docker image and have PostgreSQL running on our Linux system.\u00a0 To install HammerDB for Docker we pull the PostgreSQL specific image.<\/p>\n<p>1.<\/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\">~\/pgsql$ sudo docker pull tpcorg\/hammerdb:postgres\r\n[sudo] password for hammerdb: \r\npostgres: Pulling from tpcorg\/hammerdb\r\n06d39c85623a: Already exists \r\na030842f98bc: Pull complete \r\nc5c513b4b24b: Pull complete \r\n6b7637531b01: Pull complete \r\nbdf997c08005: Pull complete \r\nf6cc176b4372: Pull complete \r\nbb48f6545dc6: Pull complete \r\n4f4fb700ef54: Pull complete \r\nDigest: sha256:59d901bfd14452ca3f345524384dd9d4b61effcc555e5133a71534440141c378\r\nStatus: Downloaded newer image for tpcorg\/hammerdb:postgres\r\ndocker.io\/tpcorg\/hammerdb:postgres<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>and run it as follows:<\/p>\n<p>2.<\/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\">~\/pgsql$ sudo docker run --network=host -it --name hammerdb-postgres tpcorg\/hammerdb:postgres bash\r\n<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>As HammerDB has built in example scripts, if our database has default connection parameters, we can go straight ahead and run the PostgreSQL driver script. Alternatively, the following post explains how to update the scripts for your connection parameters. Note that if you are sure that you are using the default connection parameters, you can go ahead and run the script instead of the bash shell in step 2 as above.<\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"RTAJLAoikW\"><p><a href=\"https:\/\/www.hammerdb.com\/blog\/uncategorized\/hammerdb-v4-7-new-features-pt-2-example-cli-scripts\/\">HammerDB v4.7 New Features Pt 2: Example CLI Scripts<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;HammerDB v4.7 New Features Pt 2: Example CLI Scripts&#8221; &#8212; HammerDB Blog\" src=\"https:\/\/www.hammerdb.com\/blog\/uncategorized\/hammerdb-v4-7-new-features-pt-2-example-cli-scripts\/embed\/#?secret=CMuNBYsbEx#?secret=RTAJLAoikW\" data-secret=\"RTAJLAoikW\" width=\"525\" height=\"296\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p>&nbsp;<\/p>\n<p>3.<\/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\">\/home\/hammerdb\/HammerDB-4.7# .\/scripts\/tcl\/postgres\/tprocc\/pg_tprocc.sh<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>When the script has finished we can gather our results, having installed, started and run a benchmark in our HammerDB Docker image in 3 steps.<\/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\">...\r\nBUILD HAMMERDB SCHEMA\r\n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-\r\nHammerDB CLI v4.7\r\n...\r\nHAMMERDB RESULT\r\nHammerDB CLI v4.7\r\nCopyright (C) 2003-2023 Steve Shaw\r\nType \"help\" for a list of commands\r\nInitialized SQLite on-disk database \/home\/hammerdb\/HammerDB-4.7\/TMP\/hammer.DB using existing tables (188,416 KB)\r\nTRANSACTION RESPONSE TIMES\r\n{\r\n  \"NEWORD\": {\r\n    \"elapsed_ms\": \"436026.5\",\r\n    \"calls\": \"33387\",\r\n    \"min_ms\": \"0.505\",\r\n    \"avg_ms\": \"7.431\",\r\n    \"max_ms\": \"8131.221\",\r\n    \"total_ms\": \"248091.653\",\r\n    \"p99_ms\": \"31.727\",\r\n    \"p95_ms\": \"2.933\",\r\n    \"p50_ms\": \"1.676\",\r\n    \"sd\": \"147681.729\",\r\n    \"ratio_pct\": \"56.998\"\r\n  },\r\n  \"PAYMENT\": {\r\n    \"elapsed_ms\": \"436026.5\",\r\n    \"calls\": \"33439\",\r\n    \"min_ms\": \"0.28\",\r\n    \"avg_ms\": \"3.821\",\r\n    \"max_ms\": \"9115.8\",\r\n    \"total_ms\": \"127767.668\",\r\n    \"p99_ms\": \"5.088\",\r\n    \"p95_ms\": \"1.645\",\r\n    \"p50_ms\": \"0.852\",\r\n    \"sd\": \"115840.578\",\r\n    \"ratio_pct\": \"29.354\"\r\n  },\r\n  \"DELIVERY\": {\r\n    \"elapsed_ms\": \"436026.5\",\r\n    \"calls\": \"3300\",\r\n    \"min_ms\": \"1.129\",\r\n    \"avg_ms\": \"8.367\",\r\n    \"max_ms\": \"7738.33\",\r\n    \"total_ms\": \"27612.602\",\r\n    \"p99_ms\": \"39.382\",\r\n    \"p95_ms\": \"6.893\",\r\n    \"p50_ms\": \"3.635\",\r\n    \"sd\": \"144034.336\",\r\n    \"ratio_pct\": \"6.344\"\r\n  },\r\n  \"SLEV\": {\r\n    \"elapsed_ms\": \"436026.5\",\r\n    \"calls\": \"3296\",\r\n    \"min_ms\": \"0.804\",\r\n    \"avg_ms\": \"4.103\",\r\n    \"max_ms\": \"1834.672\",\r\n    \"total_ms\": \"13524.524\",\r\n    \"p99_ms\": \"8.315\",\r\n    \"p95_ms\": \"4.386\",\r\n    \"p50_ms\": \"2.685\",\r\n    \"sd\": \"39241.027\",\r\n    \"ratio_pct\": \"3.107\"\r\n  },\r\n  \"OSTAT\": {\r\n    \"elapsed_ms\": \"436026.5\",\r\n    \"calls\": \"3378\",\r\n    \"min_ms\": \"0.203\",\r\n    \"avg_ms\": \"3.592\",\r\n    \"max_ms\": \"2699.458\",\r\n    \"total_ms\": \"12135.334\",\r\n    \"p99_ms\": \"22.288\",\r\n    \"p95_ms\": \"1.47\",\r\n    \"p50_ms\": \"0.64\",\r\n    \"sd\": \"65613.436\",\r\n    \"ratio_pct\": \"2.788\"\r\n  }\r\n}\r\n\r\nTRANSACTION COUNT\r\n{\"PostgreSQL tpm\": {\r\n    \"0\": \"2023-03-27 15:22:48\",\r\n    \"65952\": \"2023-03-27 15:22:58\",\r\n    \"72756\": \"2023-03-27 15:23:08\",\r\n    \"50502\": \"2023-03-27 15:23:18\",\r\n    \"41172\": \"2023-03-27 15:23:28\",\r\n    \"55320\": \"2023-03-27 15:23:38\",\r\n    \"72258\": \"2023-03-27 15:23:49\",\r\n    \"68442\": \"2023-03-27 15:23:58\",\r\n    \"61098\": \"2023-03-27 15:24:08\",\r\n    \"52602\": \"2023-03-27 15:24:18\",\r\n    \"57360\": \"2023-03-27 15:24:28\",\r\n    \"56484\": \"2023-03-27 15:24:38\",\r\n    \"74220\": \"2023-03-27 15:24:48\",\r\n    \"55518\": \"2023-03-27 15:24:58\",\r\n    \"69714\": \"2023-03-27 15:25:09\",\r\n    \"63444\": \"2023-03-27 15:25:19\",\r\n    \"62340\": \"2023-03-27 15:25:29\",\r\n    \"57720\": \"2023-03-27 15:25:39\",\r\n    \"40698\": \"2023-03-27 15:25:49\",\r\n    \"40446\": \"2023-03-27 15:25:59\",\r\n    \"39720\": \"2023-03-27 15:26:09\",\r\n    \"31398\": \"2023-03-27 15:26:19\",\r\n    \"38124\": \"2023-03-27 15:26:29\",\r\n    \"36048\": \"2023-03-27 15:26:39\",\r\n    \"29814\": \"2023-03-27 15:26:49\",\r\n    \"34938\": \"2023-03-27 15:26:59\",\r\n    \"13980\": \"2023-03-27 15:27:09\",\r\n    \"23304\": \"2023-03-27 15:27:19\",\r\n    \"11022\": \"2023-03-27 15:27:29\",\r\n    \"47718\": \"2023-03-27 15:27:39\",\r\n    \"38202\": \"2023-03-27 15:27:49\",\r\n    \"36006\": \"2023-03-27 15:27:59\",\r\n    \"11832\": \"2023-03-27 15:28:09\",\r\n    \"29982\": \"2023-03-27 15:28:19\",\r\n    \"37308\": \"2023-03-27 15:28:29\",\r\n    \"36054\": \"2023-03-27 15:28:39\",\r\n    \"21456\": \"2023-03-27 15:28:49\",\r\n    \"15510\": \"2023-03-27 15:28:59\",\r\n    \"36534\": \"2023-03-27 15:29:10\",\r\n    \"34746\": \"2023-03-27 15:29:20\",\r\n    \"28920\": \"2023-03-27 15:29:30\",\r\n    \"8976\": \"2023-03-27 15:29:40\",\r\n    \"29280\": \"2023-03-27 15:29:50\",\r\n    \"38514\": \"2023-03-27 15:30:03\",\r\n    \"24288\": \"2023-03-27 15:30:10\",\r\n  }}\r\n\r\nHAMMERDB RESULT\r\n[\r\n  \"6421B4C85F7E03E293532393\",\r\n  \"2023-03-27 15:22:48\",\r\n  \"4 Active Virtual Users configured\",\r\n  \"TEST RESULT : System achieved 15824 NOPM from 36400 PostgreSQL TPM\"\r\n]<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>If preferred, to access utilities such as PostgreSQL metrics in this example, you can also run the HammerDB GUI and export the DISPLAY back to your host Desktop.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>HammerDB v4.5 introduced a Dockerfile and Docker Images to pull from Docker Hub for rapid deployment of HammerDB with builds already including third-party database libraries. How to deploy HammerDB CLI fast with Docker HammerDB v4.7 introduces more lightweight database specific Docker Images, so if you only want to run benchmarks against a specific database you &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.hammerdb.com\/blog\/uncategorized\/hammerdb-v4-7-new-features-pt-3-lightweight-docker-images-for-rapid-testing\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;HammerDB v4.7 New Features Pt 3: Lightweight Docker Images for rapid testing&#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-1361","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\/1361","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=1361"}],"version-history":[{"count":8,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1361\/revisions"}],"predecessor-version":[{"id":1369,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1361\/revisions\/1369"}],"wp:attachment":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/media?parent=1361"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/categories?post=1361"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/tags?post=1361"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=1361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}