aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2009-03-20 09:21:09 +0000
committerPeter Eisentraut <peter_e@gmx.net>2009-03-20 09:21:09 +0000
commit249d936bed069877923f0369bd2ce51a6f8f925e (patch)
tree9b45e6250dcbe274faefd4ba683143802a0e20ec
parent753a040486a0b3ac8fbb25fdf532f447758dcc58 (diff)
downloadpostgresql-249d936bed069877923f0369bd2ce51a6f8f925e.tar.gz
postgresql-249d936bed069877923f0369bd2ce51a6f8f925e.zip
Rename pg_restore -m to -j, and add documentation about what good numbers
are. per discussion on hackers
-rw-r--r--doc/src/sgml/ref/pg_restore.sgml64
-rw-r--r--src/bin/pg_dump/pg_backup.h4
-rw-r--r--src/bin/pg_dump/pg_backup_archiver.c6
-rw-r--r--src/bin/pg_dump/pg_restore.c20
4 files changed, 56 insertions, 38 deletions
diff --git a/doc/src/sgml/ref/pg_restore.sgml b/doc/src/sgml/ref/pg_restore.sgml
index 4971836bab8..053bcba87da 100644
--- a/doc/src/sgml/ref/pg_restore.sgml
+++ b/doc/src/sgml/ref/pg_restore.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.80 2009/02/26 16:02:37 petere Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.81 2009/03/20 09:21:08 petere Exp $ -->
<refentry id="APP-PGRESTORE">
<refmeta>
@@ -216,6 +216,46 @@
</varlistentry>
<varlistentry>
+ <term><option>-j <replaceable class="parameter">number-of-jobs</replaceable></option></term>
+ <term><option>--jobs=<replaceable class="parameter">number-of-jobs</replaceable></option></term>
+ <listitem>
+ <para>
+ Run the most time-consuming parts
+ of <application>pg_restore</> &mdash; those which load data,
+ create indexes, or create constraints &mdash; using multiple
+ concurrent jobs. This option can dramatically reduce the time
+ to restore a large database to a server running on a
+ multi-processor machine.
+ </para>
+
+ <para>
+ Each job is one process or one thread, depending on the
+ operating system, and uses a separate connection to the
+ server.
+ </para>
+
+ <para>
+ The optimal value for this option depends on the hardware
+ setup of the server, of the client, and of the network.
+ Factors include the number of CPU cores and the disk setup. A
+ good place to start is the number of CPU cores on the server,
+ but values larger than that can also lead to faster restore
+ times in many cases. Of course, values that are too high will
+ lead to decreasing performance because of thrashing.
+ </para>
+
+ <para>
+ Only the custom archive format is supported with this option.
+ The input file must be a regular file (not, for example, a
+ pipe). This option is ignored when emitting a script rather
+ than connecting directly to a database server. Also, multiple
+ jobs cannot be used together with the
+ option <option>--single-transaction</option>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>-l</option></term>
<term><option>--list</option></term>
<listitem>
@@ -242,28 +282,6 @@
</varlistentry>
<varlistentry>
- <term><option>-m <replaceable class="parameter">number-of-threads</replaceable></option></term>
- <term><option>--multi-thread=<replaceable class="parameter">number-of-threads</replaceable></option></term>
- <listitem>
- <para>
- Run the most time-consuming parts of <application>pg_restore</>
- &mdash; those which load data, create indexes, or create
- constraints &mdash; using multiple concurrent connections to the
- database. This option can dramatically reduce the time to restore a
- large database to a server running on a multi-processor machine.
- </para>
-
- <para>
- This option is ignored when emitting a script rather than connecting
- directly to a database server. Multiple threads cannot be used
- together with <option>--single-transaction</option>. Also, the input
- must be a plain file (not, for example, a pipe), and at present only
- the custom archive format is supported.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
<term><option>-n <replaceable class="parameter">namespace</replaceable></option></term>
<term><option>--schema=<replaceable class="parameter">schema</replaceable></option></term>
<listitem>
diff --git a/src/bin/pg_dump/pg_backup.h b/src/bin/pg_dump/pg_backup.h
index 3e50b6b39a8..839a9fec601 100644
--- a/src/bin/pg_dump/pg_backup.h
+++ b/src/bin/pg_dump/pg_backup.h
@@ -15,7 +15,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup.h,v 1.50 2009/02/26 16:02:37 petere Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup.h,v 1.51 2009/03/20 09:21:08 petere Exp $
*
*-------------------------------------------------------------------------
*/
@@ -139,7 +139,7 @@ typedef struct _restoreOptions
int suppressDumpWarnings; /* Suppress output of WARNING entries
* to stderr */
bool single_txn;
- int number_of_threads;
+ int number_of_jobs;
bool *idWanted; /* array showing which dump IDs to emit */
} RestoreOptions;
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c
index 148aca4ef6c..f0ff3e7aa06 100644
--- a/src/bin/pg_dump/pg_backup_archiver.c
+++ b/src/bin/pg_dump/pg_backup_archiver.c
@@ -15,7 +15,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.167 2009/03/13 22:50:44 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.168 2009/03/20 09:21:08 petere Exp $
*
*-------------------------------------------------------------------------
*/
@@ -354,7 +354,7 @@ RestoreArchive(Archive *AHX, RestoreOptions *ropt)
*
* In parallel mode, turn control over to the parallel-restore logic.
*/
- if (ropt->number_of_threads > 1 && ropt->useDB)
+ if (ropt->number_of_jobs > 1 && ropt->useDB)
restore_toc_entries_parallel(AH);
else
{
@@ -3061,7 +3061,7 @@ static void
restore_toc_entries_parallel(ArchiveHandle *AH)
{
RestoreOptions *ropt = AH->ropt;
- int n_slots = ropt->number_of_threads;
+ int n_slots = ropt->number_of_jobs;
ParallelSlot *slots;
int work_status;
int next_slot;
diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c
index c557f9706fe..69c805ce463 100644
--- a/src/bin/pg_dump/pg_restore.c
+++ b/src/bin/pg_dump/pg_restore.c
@@ -34,7 +34,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.95 2009/03/11 03:33:29 adunstan Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.96 2009/03/20 09:21:09 petere Exp $
*
*-------------------------------------------------------------------------
*/
@@ -93,8 +93,8 @@ main(int argc, char **argv)
{"host", 1, NULL, 'h'},
{"ignore-version", 0, NULL, 'i'},
{"index", 1, NULL, 'I'},
+ {"jobs", 1, NULL, 'j'},
{"list", 0, NULL, 'l'},
- {"multi-thread", 1, NULL, 'm'},
{"no-privileges", 0, NULL, 'x'},
{"no-acl", 0, NULL, 'x'},
{"no-owner", 0, NULL, 'O'},
@@ -146,7 +146,7 @@ main(int argc, char **argv)
}
}
- while ((c = getopt_long(argc, argv, "acCd:ef:F:h:iI:lL:m:n:Op:P:RsS:t:T:U:vwWxX:1",
+ while ((c = getopt_long(argc, argv, "acCd:ef:F:h:iI:j:lL:n:Op:P:RsS:t:T:U:vwWxX:1",
cmdopts, NULL)) != -1)
{
switch (c)
@@ -181,6 +181,10 @@ main(int argc, char **argv)
/* ignored, deprecated option */
break;
+ case 'j': /* number of restore jobs */
+ opts->number_of_jobs = atoi(optarg);
+ break;
+
case 'l': /* Dump the TOC summary */
opts->tocSummary = 1;
break;
@@ -189,10 +193,6 @@ main(int argc, char **argv)
opts->tocFile = strdup(optarg);
break;
- case 'm': /* number of restore threads */
- opts->number_of_threads = atoi(optarg);
- break;
-
case 'n': /* Dump data for this schema only */
opts->schemaNames = strdup(optarg);
break;
@@ -318,9 +318,9 @@ main(int argc, char **argv)
}
/* Can't do single-txn mode with multiple connections */
- if (opts->single_txn && opts->number_of_threads > 1)
+ if (opts->single_txn && opts->number_of_jobs > 1)
{
- fprintf(stderr, _("%s: cannot specify both --single-transaction and multiple threads\n"),
+ fprintf(stderr, _("%s: cannot specify both --single-transaction and multiple jobs\n"),
progname);
exit(1);
}
@@ -417,9 +417,9 @@ usage(const char *progname)
printf(_(" -C, --create create the target database\n"));
printf(_(" -e, --exit-on-error exit on error, default is to continue\n"));
printf(_(" -I, --index=NAME restore named index\n"));
+ printf(_(" -j, --jobs=NUM use this many parallel jobs to restore\n"));
printf(_(" -L, --use-list=FILENAME use table of contents from this file for\n"
" selecting/ordering output\n"));
- printf(_(" -m, --multi-thread=NUM use this many parallel connections to restore\n"));
printf(_(" -n, --schema=NAME restore only objects in this schema\n"));
printf(_(" -O, --no-owner skip restoration of object ownership\n"));
printf(_(" -P, --function=NAME(args)\n"