diff --git a/contrib/pgbench/README.pgbench b/contrib/pgbench/README.pgbench index ef040c094d..599dc3b6c5 100644 --- a/contrib/pgbench/README.pgbench +++ b/contrib/pgbench/README.pgbench @@ -1,4 +1,4 @@ -$PostgreSQL: pgsql/contrib/pgbench/README.pgbench,v 1.17 2007/04/06 09:16:15 ishii Exp $ +$PostgreSQL: pgsql/contrib/pgbench/README.pgbench,v 1.18 2007/04/08 01:15:07 ishii Exp $ pgbench README @@ -57,8 +57,9 @@ o How to use pgbench? accounts 100000 history 0 - You can increase the number of tuples by using -s option. See - below. + You can increase the number of tuples by using -s option. branches, + tellers and accounts tables are created with a fillfactor which is + set using -F option. See below. (2) Run the benchmark test @@ -162,6 +163,12 @@ o options 0 201 2513 0 1175850569 608 0 202 2038 0 1175850569 2663 + -F fillfactor + + Create tables(accounts, tellers and branches) with the given + fillfactor. Default is 100. This should be used with -i + (initialize) option. + -d debug option. diff --git a/contrib/pgbench/README.pgbench_jis b/contrib/pgbench/README.pgbench_jis index e06587a879..9a4d809aa9 100644 --- a/contrib/pgbench/README.pgbench_jis +++ b/contrib/pgbench/README.pgbench_jis @@ -1,4 +1,4 @@ -$PostgreSQL: pgsql/contrib/pgbench/README.pgbench_jis,v 1.18 2007/04/06 09:16:16 ishii Exp $ +$PostgreSQL: pgsql/contrib/pgbench/README.pgbench_jis,v 1.19 2007/04/08 01:15:07 ishii Exp $ pgbench README @@ -155,6 +155,11 @@ pgbench にはいろいろなオプションがあります. 0 201 2513 0 1175850569 608 0 202 2038 0 1175850569 2663 +-F フィルファクター + accounts, tellers, bracnhesテーブルを作成する際に指定されたフィ + ルファクターを使用します.フィルファクターのデフォルトは100で + す.このオプションは -i オプションと同時に使用します. + -d デバッグオプション.様々な情報が表示されます. ■データベースの初期化 diff --git a/contrib/pgbench/pgbench.c b/contrib/pgbench/pgbench.c index 2ffd24b25b..9bab53c940 100644 --- a/contrib/pgbench/pgbench.c +++ b/contrib/pgbench/pgbench.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/contrib/pgbench/pgbench.c,v 1.64 2007/04/06 09:16:16 ishii Exp $ + * $PostgreSQL: pgsql/contrib/pgbench/pgbench.c,v 1.65 2007/04/08 01:15:07 ishii Exp $ * * pgbench: a simple benchmark program for PostgreSQL * written by Tatsuo Ishii @@ -64,6 +64,12 @@ int nxacts = 10; /* default number of transactions per clients */ */ int scale = 1; +/* + * fillfactor. for example, fillfactor = 90 will use only 90 percent + * space during inserts and leave 10 percent free. + */ +int fillfactor = 100; + /* * end of configurable parameters *********************************************************************/ @@ -178,7 +184,7 @@ static void usage(void) { fprintf(stderr, "usage: pgbench [-h hostname][-p port][-c nclients][-t ntransactions][-s scaling_factor][-D varname=value][-n][-C][-v][-S][-N][-f filename][-l][-U login][-P password][-d][dbname]\n"); - fprintf(stderr, "(initialize mode): pgbench -i [-h hostname][-p port][-s scaling_factor][-U login][-P password][-d][dbname]\n"); + fprintf(stderr, "(initialize mode): pgbench -i [-h hostname][-p port][-s scaling_factor] [-F fillfactor] [-U login][-P password][-d][dbname]\n"); } /* random number generator */ @@ -730,11 +736,11 @@ init(void) PGresult *res; static char *DDLs[] = { "drop table if exists branches", - "create table branches(bid int not null,bbalance int,filler char(88))", + "create table branches(bid int not null,bbalance int,filler char(88)) with (fillfactor=%d)", "drop table if exists tellers", - "create table tellers(tid int not null,bid int,tbalance int,filler char(84))", + "create table tellers(tid int not null,bid int,tbalance int,filler char(84)) with (fillfactor=%d)", "drop table if exists accounts", - "create table accounts(aid int not null,bid int,abalance int,filler char(84))", + "create table accounts(aid int not null,bid int,abalance int,filler char(84)) with (fillfactor=%d)", "drop table if exists history", "create table history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22))"}; static char *DDLAFTERs[] = { @@ -751,7 +757,22 @@ init(void) exit(1); for (i = 0; i < lengthof(DDLs); i++) - executeStatement(con, DDLs[i]); + { + /* + * set fillfactor for branches, tellers and accounts tables + */ + if ((strstr(DDLs[i], "create table branches") == DDLs[i]) || + (strstr(DDLs[i], "create table tellers") == DDLs[i]) || + (strstr(DDLs[i], "create table accounts") == DDLs[i])) + { + char ddl_stmt[128]; + snprintf(ddl_stmt, 128, DDLs[i], fillfactor); + executeStatement(con, ddl_stmt); + continue; + } + else + executeStatement(con, DDLs[i]); + } executeStatement(con, "begin"); @@ -1153,7 +1174,7 @@ main(int argc, char **argv) memset(state, 0, sizeof(*state)); - while ((c = getopt(argc, argv, "ih:nvp:dc:t:s:U:P:CNSlf:D:")) != -1) + while ((c = getopt(argc, argv, "ih:nvp:dc:t:s:U:P:CNSlf:D:F:")) != -1) { switch (c) { @@ -1258,6 +1279,14 @@ main(int argc, char **argv) } } break; + case 'F': + fillfactor = atoi(optarg); + if ((fillfactor < 10) || (fillfactor > 100)) + { + fprintf(stderr, "invalid fillfactor: %d\n", fillfactor); + exit(1); + } + break; default: usage(); exit(1);