mirror of
https://github.com/postgres/postgres.git
synced 2025-05-06 19:59:18 +03:00
Rename pg_restore -m to -j, and add documentation about what good numbers
are. per discussion on hackers
This commit is contained in:
parent
753a040486
commit
249d936bed
@ -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">
|
<refentry id="APP-PGRESTORE">
|
||||||
<refmeta>
|
<refmeta>
|
||||||
@ -215,6 +215,46 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</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</> — those which load data,
|
||||||
|
create indexes, or create constraints — 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>
|
<varlistentry>
|
||||||
<term><option>-l</option></term>
|
<term><option>-l</option></term>
|
||||||
<term><option>--list</option></term>
|
<term><option>--list</option></term>
|
||||||
@ -241,28 +281,6 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</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</>
|
|
||||||
— those which load data, create indexes, or create
|
|
||||||
constraints — 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>
|
<varlistentry>
|
||||||
<term><option>-n <replaceable class="parameter">namespace</replaceable></option></term>
|
<term><option>-n <replaceable class="parameter">namespace</replaceable></option></term>
|
||||||
<term><option>--schema=<replaceable class="parameter">schema</replaceable></option></term>
|
<term><option>--schema=<replaceable class="parameter">schema</replaceable></option></term>
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
int suppressDumpWarnings; /* Suppress output of WARNING entries
|
||||||
* to stderr */
|
* to stderr */
|
||||||
bool single_txn;
|
bool single_txn;
|
||||||
int number_of_threads;
|
int number_of_jobs;
|
||||||
|
|
||||||
bool *idWanted; /* array showing which dump IDs to emit */
|
bool *idWanted; /* array showing which dump IDs to emit */
|
||||||
} RestoreOptions;
|
} RestoreOptions;
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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.
|
* 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);
|
restore_toc_entries_parallel(AH);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3061,7 +3061,7 @@ static void
|
|||||||
restore_toc_entries_parallel(ArchiveHandle *AH)
|
restore_toc_entries_parallel(ArchiveHandle *AH)
|
||||||
{
|
{
|
||||||
RestoreOptions *ropt = AH->ropt;
|
RestoreOptions *ropt = AH->ropt;
|
||||||
int n_slots = ropt->number_of_threads;
|
int n_slots = ropt->number_of_jobs;
|
||||||
ParallelSlot *slots;
|
ParallelSlot *slots;
|
||||||
int work_status;
|
int work_status;
|
||||||
int next_slot;
|
int next_slot;
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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'},
|
{"host", 1, NULL, 'h'},
|
||||||
{"ignore-version", 0, NULL, 'i'},
|
{"ignore-version", 0, NULL, 'i'},
|
||||||
{"index", 1, NULL, 'I'},
|
{"index", 1, NULL, 'I'},
|
||||||
|
{"jobs", 1, NULL, 'j'},
|
||||||
{"list", 0, NULL, 'l'},
|
{"list", 0, NULL, 'l'},
|
||||||
{"multi-thread", 1, NULL, 'm'},
|
|
||||||
{"no-privileges", 0, NULL, 'x'},
|
{"no-privileges", 0, NULL, 'x'},
|
||||||
{"no-acl", 0, NULL, 'x'},
|
{"no-acl", 0, NULL, 'x'},
|
||||||
{"no-owner", 0, NULL, 'O'},
|
{"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)
|
cmdopts, NULL)) != -1)
|
||||||
{
|
{
|
||||||
switch (c)
|
switch (c)
|
||||||
@ -181,6 +181,10 @@ main(int argc, char **argv)
|
|||||||
/* ignored, deprecated option */
|
/* ignored, deprecated option */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'j': /* number of restore jobs */
|
||||||
|
opts->number_of_jobs = atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'l': /* Dump the TOC summary */
|
case 'l': /* Dump the TOC summary */
|
||||||
opts->tocSummary = 1;
|
opts->tocSummary = 1;
|
||||||
break;
|
break;
|
||||||
@ -189,10 +193,6 @@ main(int argc, char **argv)
|
|||||||
opts->tocFile = strdup(optarg);
|
opts->tocFile = strdup(optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'm': /* number of restore threads */
|
|
||||||
opts->number_of_threads = atoi(optarg);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'n': /* Dump data for this schema only */
|
case 'n': /* Dump data for this schema only */
|
||||||
opts->schemaNames = strdup(optarg);
|
opts->schemaNames = strdup(optarg);
|
||||||
break;
|
break;
|
||||||
@ -318,9 +318,9 @@ main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Can't do single-txn mode with multiple connections */
|
/* 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);
|
progname);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@ -417,9 +417,9 @@ usage(const char *progname)
|
|||||||
printf(_(" -C, --create create the target database\n"));
|
printf(_(" -C, --create create the target database\n"));
|
||||||
printf(_(" -e, --exit-on-error exit on error, default is to continue\n"));
|
printf(_(" -e, --exit-on-error exit on error, default is to continue\n"));
|
||||||
printf(_(" -I, --index=NAME restore named index\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"
|
printf(_(" -L, --use-list=FILENAME use table of contents from this file for\n"
|
||||||
" selecting/ordering output\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(_(" -n, --schema=NAME restore only objects in this schema\n"));
|
||||||
printf(_(" -O, --no-owner skip restoration of object ownership\n"));
|
printf(_(" -O, --no-owner skip restoration of object ownership\n"));
|
||||||
printf(_(" -P, --function=NAME(args)\n"
|
printf(_(" -P, --function=NAME(args)\n"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user