]> granicus.if.org Git - postgresql/commitdiff
Change the delta val from 0 and 10000 to -5000 and 5000 per recent
authorTatsuo Ishii <ishii@postgresql.org>
Fri, 28 Jul 2006 22:58:26 +0000 (22:58 +0000)
committerTatsuo Ishii <ishii@postgresql.org>
Fri, 28 Jul 2006 22:58:26 +0000 (22:58 +0000)
discussion in hackers list.  Also enhance predefined benchmark
scenarios to reflect the scaling factor parameter flexibly.

contrib/pgbench/pgbench.c

index 9183ac386860f2e30e2eec352ac5c88aaac7e408..822cb849461ba944f23f5611c87a1b7f4832b5f9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $PostgreSQL: pgsql/contrib/pgbench/pgbench.c,v 1.50 2006/07/26 07:24:50 ishii Exp $
+ * $PostgreSQL: pgsql/contrib/pgbench/pgbench.c,v 1.51 2006/07/28 22:58:26 ishii Exp $
  *
  * pgbench: a simple benchmark program for PostgreSQL
  * written by Tatsuo Ishii
@@ -134,10 +134,13 @@ int                       num_files;                      /* its number */
 
 /* default scenario */
 static char *tpc_b = {
-       "\\setrandom aid 1 100000\n"
-       "\\setrandom bid 1 1\n"
-       "\\setrandom tid 1 10\n"
-       "\\setrandom delta 1 10000\n"
+       "\\set nbranches :tps\n"
+       "\\set ntellers 10 * :tps\n"
+    "\\set naccounts 100000 * :tps\n"
+       "\\setrandom aid 1 :naccounts\n"
+       "\\setrandom bid 1 :nbranches\n"
+       "\\setrandom tid 1 :ntellers\n"
+       "\\setrandom delta -5000 5000\n"
        "BEGIN;\n"
        "UPDATE accounts SET abalance = abalance + :delta WHERE aid = :aid;\n"
        "SELECT abalance FROM accounts WHERE aid = :aid;\n"
@@ -149,10 +152,13 @@ static char *tpc_b = {
 
 /* -N case */
 static char *simple_update = {
-       "\\setrandom aid 1 100000\n"
-       "\\setrandom bid 1 1\n"
-       "\\setrandom tid 1 10\n"
-       "\\setrandom delta 1 10000\n"
+       "\\set nbranches :tps\n"
+       "\\set ntellers 10 * :tps\n"
+    "\\set naccounts 100000 * :tps\n"
+       "\\setrandom aid 1 :naccounts\n"
+       "\\setrandom bid 1 :nbranches\n"
+       "\\setrandom tid 1 :ntellers\n"
+       "\\setrandom delta -5000 5000\n"
        "BEGIN;\n"
        "UPDATE accounts SET abalance = abalance + :delta WHERE aid = :aid;\n"
        "SELECT abalance FROM accounts WHERE aid = :aid;\n"
@@ -162,7 +168,8 @@ static char *simple_update = {
 
 /* -S case */
 static char *select_only = {
-       "\\setrandom aid 1 100000\n"
+    "\\set naccounts 100000 * :tps\n"
+       "\\setrandom aid 1 :naccounts\n"
        "SELECT abalance FROM accounts WHERE aid = :aid;\n"
 };
 
@@ -570,12 +577,14 @@ top:
                        else
                                min = atoi(argv[2]);
 
+#ifdef NOT_USED
                        if (min < 0)
                        {
                                fprintf(stderr, "%s: invalid minimum number %d\n", argv[0], min);
                                st->ecnt++;
                                return;
                        }
+#endif
 
                        if (*argv[3] == ':')
                        {
@@ -597,6 +606,9 @@ top:
                                return;
                        }
 
+#ifdef DEBUG
+                       printf("min: %d max: %d random: %d\n", min, max, getrand(min, max));
+#endif
                        snprintf(res, sizeof(res), "%d", getrand(min, max));
 
                        if (putVariable(st, argv[1], res) == false)
@@ -1477,38 +1489,21 @@ main(int argc, char **argv)
        /* process bultin SQL scripts */
        switch (ttype)
        {
-                       char            buf[128];
-
                case 0:
                        sql_files[0] = process_builtin(tpc_b);
-                       snprintf(buf, sizeof(buf), "%d", 100000 * tps);
-                       sql_files[0][0]->argv[3] = strdup(buf);
-                       snprintf(buf, sizeof(buf), "%d", 1 * tps);
-                       sql_files[0][1]->argv[3] = strdup(buf);
-                       snprintf(buf, sizeof(buf), "%d", 10 * tps);
-                       sql_files[0][2]->argv[3] = strdup(buf);
-                       snprintf(buf, sizeof(buf), "%d", 10000 * tps);
-                       sql_files[0][3]->argv[3] = strdup(buf);
                        num_files = 1;
                        break;
+
                case 1:
                        sql_files[0] = process_builtin(select_only);
-                       snprintf(buf, sizeof(buf), "%d", 100000 * tps);
-                       sql_files[0][0]->argv[3] = strdup(buf);
                        num_files = 1;
                        break;
+
                case 2:
                        sql_files[0] = process_builtin(simple_update);
-                       snprintf(buf, sizeof(buf), "%d", 100000 * tps);
-                       sql_files[0][0]->argv[3] = strdup(buf);
-                       snprintf(buf, sizeof(buf), "%d", 1 * tps);
-                       sql_files[0][1]->argv[3] = strdup(buf);
-                       snprintf(buf, sizeof(buf), "%d", 10 * tps);
-                       sql_files[0][2]->argv[3] = strdup(buf);
-                       snprintf(buf, sizeof(buf), "%d", 10000 * tps);
-                       sql_files[0][3]->argv[3] = strdup(buf);
                        num_files = 1;
                        break;
+
                default:
                        break;
        }