{"id":1371,"date":"2023-04-04T15:50:10","date_gmt":"2023-04-04T15:50:10","guid":{"rendered":"https:\/\/www.hammerdb.com\/blog\/?p=1371"},"modified":"2023-04-18T10:58:24","modified_gmt":"2023-04-18T10:58:24","slug":"find-the-right-postgresql-mysql-and-mariadb-parameters-first-time-with-hammerpost","status":"publish","type":"post","link":"https:\/\/www.hammerdb.com\/blog\/uncategorized\/find-the-right-postgresql-mysql-and-mariadb-parameters-first-time-with-hammerpost\/","title":{"rendered":"Find the right PostgreSQL, MySQL and MariaDB parameters first time with hammerpost"},"content":{"rendered":"<p>Hammerpost is a HammerDB contribution project from <a href=\"https:\/\/github.com\/dineshkumar02\">@dineshkumar02<\/a> that wraps HammerDB with an automated framework to rapidly prototype multiple combinations of database parameters to find the optimal configuration for any specific environment.<\/p>\n<p>You can find the hammerpost project and documentation <a href=\"https:\/\/github.com\/dineshkumar02\/hammerpost\">here<\/a>. This post gives a brief example of using hammerpost to encourage you to investigate this project further.\u00a0 In this example, we already have a PostgreSQL database already running on a system and want to test different combinations of parameters.<\/p>\n<p>Firstly, we will check that we can start our 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\">hammerdb@REDPOLL:~$ \/home\/hammerdb\/pgsql\/bin\/pg_ctl -D \/home\/hammerdb\/pgsql\/data start\r\nwaiting for server to start....2023-04-04 11:27:29.650 GMT [3555] LOG:  redirecting log output to logging collector process\r\n2023-04-04 11:27:29.650 GMT [3555] HINT:  Future log output will appear in directory \"log\".\r\ndone\r\nserver started<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Next, we will install the <a href=\"https:\/\/github.com\/dineshkumar02\/hammerpost-agent\">hammerpost-agent<\/a> on the same system as the database,\u00a0 this example the system is running Ubuntu 22.04.<\/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:~$ git clone https:\/\/github.com\/dineshkumar02\/hammerpost-agent.git\r\nCloning into 'hammerpost-agent'...\r\nremote: Enumerating objects: 38, done.\r\nremote: Counting objects: 100% (38\/38), done.\r\nremote: Compressing objects: 100% (22\/22), done.\r\nremote: Total 38 (delta 15), reused 32 (delta 9), pack-reused 0\r\nReceiving objects: 100% (38\/38), 22.45 KiB | 1.25 MiB\/s, done.\r\nResolving deltas: 100% (15\/15), done.\r\nhammerdb@REDPOLL:~$ cd hammerpost-agent\r\nhammerdb@REDPOLL:~\/hammerpost-agent$ make\r\nGOOS=linux CGO_ENABLED=0 go build -o hammerpost-agent -v -ldflags=\"-X 'main.Version=0.1.0' -X 'main.GitCommit=45d7496' -X 'main.CommitDate=2023-04-02 19:14:52 +0530'\"\r\nhammerpost-agent<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>We can then start the agent on the same system as the database giving it the ability to start and stop our database with the modified parameters.<\/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:~\/hammerpost-agent$ sudo .\/hammerpost-agent --stop-cmd \"\/home\/hammerdb\/pgsql\/bin\/pg_ctl -D \/home\/hammerdb\/pgsql\/data stop -m f\" --start-cmd \"\/home\/hammerdb\/pgsql\/bin\/pg_ctl -D \/home\/hammerdb\/pgsql\/data start\" --pgdsn \"postgres:\/\/postgres:postgres@localhost:5432\/postgres\" --db-type postgres\r\n[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.\r\n\r\n[GIN-debug] [WARNING] Running in \"debug\" mode. Switch to \"release\" mode in production.\r\n - using env:\texport GIN_MODE=release\r\n - using code:\tgin.SetMode(gin.ReleaseMode)\r\n\r\n[GIN-debug] GET    \/start                    --&gt; main.main.func1 (3 handlers)\r\n[GIN-debug] GET    \/stop                     --&gt; main.main.func2 (3 handlers)\r\n[GIN-debug] GET    \/info                     --&gt; main.main.func3 (3 handlers)\r\n[GIN-debug] GET    \/metrics                  --&gt; main.main.func4 (3 handlers)\r\n[GIN-debug] POST   \/set-param                --&gt; main.main.func5 (3 handlers)\r\n[GIN-debug] GET    \/load                     --&gt; main.main.func6 (3 handlers)\r\n[GIN-debug] GET    \/ping                     --&gt; main.main.func7 (3 handlers)\r\n[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.\r\nPlease check https:\/\/pkg.go.dev\/github.com\/gin-gonic\/gin#readme-don-t-trust-all-proxies for details.\r\n[GIN-debug] Listening and serving HTTP on :8989<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Next we will grab the latest HammerDB PostgreSQL docker image with the drivers included.<\/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:postgres\r\n[sudo] password for hammerdb: \r\npostgres: Pulling from tpcorg\/hammerdb\r\n...\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 start the 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 run --network=host -it --name hammerdb-postgres tpcorg\/hammerdb:postgres bash\r\nroot@REDPOLL:\/home\/hammerdb\/HammerDB-4.7#<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>We now install go inside the container and install hammerpost in the HammerDB directory. Note that it needs to be a more updated version than the default with the HammerDB Docker 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\">root@REDPOLL:\/usr\/local# wget https:\/\/go.dev\/dl\/go1.19.4.linux-amd64.tar.gz\r\nroot@REDPOLL:\/usr\/local# tar -xvf go1.19.4.linux-amd64.tar.gz\r\nroot@REDPOLL:\/usr\/local# export PATH=\/usr\/local\/go\/bin:$PATH\r\nroot@REDPOLL:\/usr\/local# apt-get install make\r\n\r\nroot@REDPOLL:\/home\/hammerdb\/HammerDB-4.7# git clone https:\/\/github.com\/dineshkumar02\/hammerpost.git\r\nroot@REDPOLL:\/home\/hammerdb\/HammerDB-4.7\/hammerpost# go version\r\ngo version go1.19.4 linux\/amd64\r\nroot@REDPOLL:\/home\/hammerdb\/HammerDB-4.7\/hammerpost# go get\r\nroot@REDPOLL:\/home\/hammerdb\/HammerDB-4.7\/hammerpost# make<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Back in the main HammerDB directory we can link the hammerpost executable, templates and parameter file to local links, meaning we can run hammerpost straight from the local hammerdb directory. We have used hammerp as the name of the link to the hammerpost execuatable as the directory is already called hammerpost.<\/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.7# ln -s .\/hammerpost\/hammerpost .\/hammerp\r\nroot@REDPOLL:\/home\/hammerdb\/HammerDB-4.7# ln -s .\/hammerpost\/hammer-templates .\/hammer-templates\r\nroot@REDPOLL:\/home\/hammerdb\/HammerDB-4.7# ln -s .\/hammerpost\/params.json .\/params.json<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>With hammerpost installed the first step is to initialize the schema with an example 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.7# .\/hammerp --init --name test-bench-1 --pgdsn \"postgres:\/\/postgres:postgres@localhost:5432\/postgres\" --users 4 --warehouses 10 --hammerpost-agent localhost:8989\r\n\r\n\u2554 hammerpost - v0.1.0 \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\r\n\u2551                                                              \u2551\r\n\u2551                                                              \u2551\r\n\u2551                 OS linux                                     \u2551\r\n\u2551           Platform ubuntu-22.04                              \u2551\r\n\u2551             Kernel 5.15.0-56-generic                         \u2551\r\n\u2551             Uptime 12131                                     \u2551\r\n\u2551    Total Processes 233                                       \u2551\r\n\u2551           Load Avg 0.05                                      \u2551\r\n\u2551                CPU Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz  \u2551\r\n\u2551          CPU Count 4                                         \u2551\r\n\u2551          CPU Cores 1                                         \u2551\r\n\u2551            CPU Mhz 3491.918                                  \u2551\r\n\u2551   Total Memory(GB) 7                                         \u2551\r\n\u2551    Free Memory(GB) 1                                         \u2551\r\n\u2551    Used Memory(GB) 0                                         \u2551\r\n\u2551                                                              \u2551\r\n\u2551                                                              \u2551\r\n\u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d\r\n\r\nDB type  postgres\r\nschema initialized<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>We can then update the params.json file with the combination of parameters we want to test. In this example it is 4 tests with different combinations of shared_buffers and wal_buffers.<\/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.7# vi params.json\r\n{\r\n        \"shared_buffers\": [\"512MB\", \"1GB\"],\r\n        \"wal_buffers\": [\"32MB\", \"64MB\"]\r\n}<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>We can then run the test. hammerpost will update the parameters, start and stop the database and run 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.7# .\/hammerp --run --name test-bench --pgdsn \"postgres:\/\/postgres:postgres@redpoll:5432\/postgres\" --users 4 --warehouses 10 --hammerpost-agent redpoll:8989 --param-file .\/params.json  --logfile test-bench1.log\r\n\r\n\u2554 hammerpost - v0.1.0 \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\r\n\u2551                                                              \u2551\r\n\u2551                                                              \u2551\r\n\u2551                 OS linux                                     \u2551\r\n\u2551           Platform ubuntu-22.04                              \u2551\r\n\u2551             Kernel 5.15.0-56-generic                         \u2551\r\n\u2551             Uptime 16947                                     \u2551\r\n\u2551    Total Processes 237                                       \u2551\r\n\u2551           Load Avg 0.42                                      \u2551\r\n\u2551                CPU Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz  \u2551\r\n\u2551          CPU Count 4                                         \u2551\r\n\u2551          CPU Cores 1                                         \u2551\r\n\u2551            CPU Mhz 3491.918                                  \u2551\r\n\u2551   Total Memory(GB) 7                                         \u2551\r\n\u2551    Free Memory(GB) 0                                         \u2551\r\n\u2551    Used Memory(GB) 0                                         \u2551\r\n\u2551                                                              \u2551\r\n\u2551                                                              \u2551\r\n\u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d\r\n\r\nDB type  postgres\r\nBenchmark id  5\r\nParameter test cases  4\r\n\r\n\u250c Parameters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502                      \u2502\r\n\u2502 shared_buffers:512MB \u2502\r\n\u2502 wal_buffers:32MB     \u2502\r\n\u2502                      \u2502\r\n\u2502                      \u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n\r\n\u250c Results \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502                       \u2502\r\n\u2502 66906 NOPM 151341 TPM \u2502\r\n\u2502                       \u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n\r\n\u250c Parameters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502                    \u2502\r\n\u2502 shared_buffers:1GB \u2502\r\n\u2502 wal_buffers:32MB   \u2502\r\n\u2502                    \u2502\r\n\u2502                    \u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n\r\n\u250c Results \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502                       \u2502\r\n\u2502 70710 NOPM 161991 TPM \u2502\r\n\u2502                       \u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n\r\n\u250c Parameters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502                      \u2502\r\n\u2502 shared_buffers:512MB \u2502\r\n\u2502 wal_buffers:16MB     \u2502\r\n\u2502                      \u2502\r\n\u2502                      \u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n\r\n\u250c Results \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502                       \u2502\r\n\u2502 67146 NOPM 153539 TPM \u2502\r\n\u2502                       \u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n\r\n\u250c Parameters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502                    \u2502\r\n\u2502 shared_buffers:1GB \u2502\r\n\u2502 wal_buffers:16MB   \u2502\r\n\u2502                    \u2502\r\n\u2502                    \u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n\r\n\u250c Results \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502                       \u2502\r\n\u2502 66126 NOPM 151047 TPM \u2502\r\n\u2502                       \u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n\r\nhammerdb run completed\r\nroot@REDPOLL:\/home\/hammerdb\/HammerDB-4.7#<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>hammerpost will also gather system level metrics that you can use to analyze your tests.<\/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.7# .\/hammerp --test-details 9\r\n+----------------------+----------------------+----------+----------------------+--------+-------+\r\n|        START         |         END          | DURATION |      PARAMETERS      | OUTPUT | ERROR |\r\n+----------------------+----------------------+----------+----------------------+--------+-------+\r\n| 2023-04-04T15:11:38Z | 2023-04-04T15:14:34Z | 2m56s    | shared_buffers:512MB |        |       |\r\n|                      |                      |          | wal_buffers:16MB     |        |       |\r\n+----------------------+----------------------+----------+----------------------+--------+-------+\r\nTest Details\r\nroot@REDPOLL:\/home\/hammerdb\/HammerDB-4.7# .\/hammerp --test-metrics 9\r\n+-----------+--------------+-------------------------------+\r\n| CPU USAGE | MEMORY USAGE |             TIME              |\r\n+-----------+--------------+-------------------------------+\r\n|     21.72 |        98.04 | 2023-04-04 15:13:27 +0000 UTC |\r\n+-----------+--------------+-------------------------------+\r\n|     95.36 |        98.35 | 2023-04-04 15:13:29 +0000 UTC |\r\n+-----------+--------------+-------------------------------+\r\n|     95.18 |        98.50 | 2023-04-04 15:13:31 +0000 UTC |\r\n+-----------+--------------+-------------------------------+\r\n|     98.75 |        98.57 | 2023-04-04 15:13:34 +0000 UTC |\r\n+-----------+--------------+-------------------------------+\r\n|    100.00 |        98.46 | 2023-04-04 15:13:36 +0000 UTC |\r\n+-----------+--------------+-------------------------------+\r\n|     97.96 |        98.50 | 2023-04-04 15:13:38 +0000 UTC |\r\n+-----------+--------------+-------------------------------+\r\n|     99.50 |        98.56 | 2023-04-04 15:13:40 +0000 UTC |\r\n+-----------+--------------+-------------------------------+\r\n|     98.99 |        98.35 | 2023-04-04 15:13:42 +0000 UTC |\r\n+-----------+--------------+-------------------------------+\r\n|    100.00 |        98.41 | 2023-04-04 15:13:45 +0000 UTC |\r\n+-----------+--------------+-------------------------------+\r\n|     94.72 |        98.49 | 2023-04-04 15:13:47 +0000 UTC |\r\n+-----------+--------------+-------------------------------+\r\nTest Metrics\r\nroot@REDPOLL:\/home\/hammerdb\/HammerDB-4.7# .\/hammerp --test-stats 9\r\n+--------+--------+------------+----------+------------+----------+---------+\r\n| AVGCPU | AVGMEM | AVGRPERSEC | AVGRMBPS | AVGWPERSEC | AVGWMBPS | AVGUTIL |\r\n+--------+--------+------------+----------+------------+----------+---------+\r\n|  94.69 |  98.40 |       0.00 |     0.00 |       0.00 |     0.00 |    0.00 |\r\n+--------+--------+------------+----------+------------+----------+---------+\r\n<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Hammerpost can be a great addition to your HammerDB benchmarking environment by enabling you to automate your tests to determine optimal parameter settings for your configuration.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hammerpost is a HammerDB contribution project from @dineshkumar02 that wraps HammerDB with an automated framework to rapidly prototype multiple combinations of database parameters to find the optimal configuration for any specific environment. You can find the hammerpost project and documentation here. This post gives a brief example of using hammerpost to encourage you to investigate &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.hammerdb.com\/blog\/uncategorized\/find-the-right-postgresql-mysql-and-mariadb-parameters-first-time-with-hammerpost\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Find the right PostgreSQL, MySQL and MariaDB parameters first time with hammerpost&#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-1371","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\/1371","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=1371"}],"version-history":[{"count":23,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1371\/revisions"}],"predecessor-version":[{"id":1394,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1371\/revisions\/1394"}],"wp:attachment":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/media?parent=1371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/categories?post=1371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/tags?post=1371"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=1371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}