Обсуждение: How to use postgres 7.0.3 with -F?

Поиск
Список
Период
Сортировка

How to use postgres 7.0.3 with -F?

От
elwood@agouros.de (Konstantinos Agouros)
Дата:
Hi,

someone gave me the tip to use the -F-flag to improve performance. Since
I can't run the postmaster with -F but just postgres how do I do it, if I
want to import a big amount of data?

Konstantin
--
Dipl-Inf. Konstantin Agouros aka Elwood Blues. Internet: elwood@agouros.de
Otkerstr. 28, 81547 Muenchen, Germany. Tel +49 89 69370185
----------------------------------------------------------------------------
"Captain, this ship will not sustain the forming of the cosmos." B'Elana Torres

Re: How to use postgres 7.0.3 with -F?

От
Tom Lane
Дата:
elwood@agouros.de (Konstantinos Agouros) writes:
> someone gave me the tip to use the -F-flag to improve performance. Since
> I can't run the postmaster with -F but just postgres how do I do it, if I
> want to import a big amount of data?

In 7.0.* (but not prior versions) it is safe to run individual backends
with -F; other backends will still fsync their changes.  So, you can
start a backend that's going to do an import with

    export PGOPTIONS="-F"
    psql mydb
    ....

(adjust 'export' command syntax depending on your preferred shell.)
libpq passes the value of the environment variable PGOPTIONS over to the
backend, and away you go.  -dN (debug level) is another backend command-
line switch commonly set this way.

            regards, tom lane

Re: How to use postgres 7.0.3 with -F?

От
elwood@agouros.de (Konstantinos Agouros)
Дата:
In <12492.982346115@sss.pgh.pa.us> tgl@sss.pgh.pa.us (Tom Lane) writes:

>elwood@agouros.de (Konstantinos Agouros) writes:
>> someone gave me the tip to use the -F-flag to improve performance. Since
>> I can't run the postmaster with -F but just postgres how do I do it, if I
>> want to import a big amount of data?

>In 7.0.* (but not prior versions) it is safe to run individual backends
>with -F; other backends will still fsync their changes.  So, you can
>start a backend that's going to do an import with

>    export PGOPTIONS="-F"
>    psql mydb
>    ....

>(adjust 'export' command syntax depending on your preferred shell.)
>libpq passes the value of the environment variable PGOPTIONS over to the
>backend, and away you go.  -dN (debug level) is another backend command-
>line switch commonly set this way.
Ahhhh Ohhhh thanks for the help I was confused. Does this also work that way, if
I use it from DBI::Pg from perl? Like setting $ENV{'PGOPTIONS'}

Konstantin

>            regards, tom lane

--
Dipl-Inf. Konstantin Agouros aka Elwood Blues. Internet: elwood@agouros.de
Otkerstr. 28, 81547 Muenchen, Germany. Tel +49 89 69370185
----------------------------------------------------------------------------
"Captain, this ship will not sustain the forming of the cosmos." B'Elana Torres

Re: How to use postgres 7.0.3 with -F?

От
Tom Lane
Дата:
elwood@agouros.de (Konstantinos Agouros) writes:
>> export PGOPTIONS="-F"
>> psql mydb

> Ahhhh Ohhhh thanks for the help I was confused. Does this also work
> that way, if I use it from DBI::Pg from perl? Like setting
> $ENV{'PGOPTIONS'}

Yeah, I think that should work if you do it before opening a connection,
but a more straightforward way is to set options=-F in the
DBI->connect() command ...

            regards, tom lane

Re: How to use postgres 7.0.3 with -F?

От
Doug McNaught
Дата:
Tom Lane <tgl@sss.pgh.pa.us> writes:

> elwood@agouros.de (Konstantinos Agouros) writes:
> >> export PGOPTIONS="-F"
> >> psql mydb
>
> > Ahhhh Ohhhh thanks for the help I was confused. Does this also work
> > that way, if I use it from DBI::Pg from perl? Like setting
> > $ENV{'PGOPTIONS'}
>
> Yeah, I think that should work if you do it before opening a connection,
> but a more straightforward way is to set options=-F in the
> DBI->connect() command ...

I think Tom's suggestion is the way to go--I found a long time ago
that Perl only puts the %ENV hash into the environment when it's about
to call exec().  I was using DBD::Informix and found that my
INFORMIXDIR variable, set in the Perl script, was not making it
through to the Informix libraries (since no separate program was being
called).  I had to run the Perl script from a wrapper shell script
that set INFORMIXDIR...

This may have been fixed by now, though, it was five years ago or so.

-Doug