summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2012-07-23 14:38:34 -0400
committerRobert Haas <rhaas@postgresql.org>2012-07-23 14:42:35 -0400
commit46b2b7e0ff06498d51ebf08871c73e5b5e0aa050 (patch)
tree8d8d38ccc33c4fb6a3c26b6d963a3cdec41f17f7
parentb71258af5613e627bb2b3b1e1874abe5c0226dc4 (diff)
Make pgbench vacuum before building indexes.
This is apparently faster than doing things the other way around when the scale factor is large. Along the way, adjust -n to suppress vacuuming during initialization as well as during test runs. Jeff Janes, with some small changes by me.
-rw-r--r--contrib/pgbench/pgbench.c21
-rw-r--r--doc/src/sgml/pgbench.sgml9
2 files changed, 22 insertions, 8 deletions
diff --git a/contrib/pgbench/pgbench.c b/contrib/pgbench/pgbench.c
index a744f5fedb5..00cab73f909 100644
--- a/contrib/pgbench/pgbench.c
+++ b/contrib/pgbench/pgbench.c
@@ -345,6 +345,7 @@ usage(void)
" %s [OPTION]... [DBNAME]\n"
"\nInitialization options:\n"
" -i invokes initialization mode\n"
+ " -n do not run VACUUM after initialization\n"
" -F NUM fill factor\n"
" -s NUM scaling factor\n"
" --foreign-keys\n"
@@ -1282,7 +1283,7 @@ disconnect_all(CState *state, int length)
/* create tables and setup data */
static void
-init(void)
+init(bool is_no_vacuum)
{
/*
* Note: TPC-B requires at least 100 bytes per row, and the "filler"
@@ -1433,6 +1434,16 @@ init(void)
}
executeStatement(con, "commit");
+ /* vacuum */
+ if (!is_no_vacuum)
+ {
+ fprintf(stderr, "vacuum...\n");
+ executeStatement(con, "vacuum analyze pgbench_branches");
+ executeStatement(con, "vacuum analyze pgbench_tellers");
+ executeStatement(con, "vacuum analyze pgbench_accounts");
+ executeStatement(con, "vacuum analyze pgbench_history");
+ }
+
/*
* create indexes
*/
@@ -1469,12 +1480,6 @@ init(void)
}
}
- /* vacuum */
- fprintf(stderr, "vacuum...");
- executeStatement(con, "vacuum analyze pgbench_branches");
- executeStatement(con, "vacuum analyze pgbench_tellers");
- executeStatement(con, "vacuum analyze pgbench_accounts");
- executeStatement(con, "vacuum analyze pgbench_history");
fprintf(stderr, "done.\n");
PQfinish(con);
@@ -2139,7 +2144,7 @@ main(int argc, char **argv)
if (is_init_mode)
{
- init();
+ init(is_no_vacuum);
exit(0);
}
diff --git a/doc/src/sgml/pgbench.sgml b/doc/src/sgml/pgbench.sgml
index 5ce66a6ac04..437fceab2e4 100644
--- a/doc/src/sgml/pgbench.sgml
+++ b/doc/src/sgml/pgbench.sgml
@@ -158,6 +158,15 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</>
</varlistentry>
<varlistentry>
+ <term><option>-n</option></term>
+ <listitem>
+ <para>
+ Perform no vacuuming after initialization.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>-F</option> <replaceable>fillfactor</></term>
<listitem>
<para>