Обсуждение: vacuum verbose relations reporting

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

vacuum verbose relations reporting

От
Jeff Frost
Дата:
Looks like vacuum verbose doesn't report the number of relations necessary on
version 8.2.7.  It just reports the max_fsm_relations value instead:

INFO:  free space map contains 113311 pages in 10000 relations
DETAIL:  A total of 252816 page slots are in use (including overhead).
252816 page slots are required to track all free space.
Current limits are:  600000 page slots, 10000 relations, using 4587 kB.
NOTICE:  max_fsm_relations(10000) equals the number of relations checked
HINT:  You have at least 10000 relations.  Consider increasing the
configuration parameter "max_fsm_relations".
VACUUM

postgres=# show server_version;
  server_version
----------------
  8.2.7

Does it do this in more recent versions of 8.2 or 8.3?

--
Jeff Frost, Owner     <jeff@frostconsultingllc.com>
Frost Consulting, LLC     http://www.frostconsultingllc.com/
Phone: 916-647-6411    FAX: 916-405-4032

Re: vacuum verbose relations reporting

От
Carol Walter
Дата:
If I understand your question, you might need to turn up
log_min_messages to debug1 otherwise you won't see the relations.  I
had the system set to autovacuum and I couldn't see that it was doing
it until I made this change.

Carol

On Aug 26, 2008, at 3:09 PM, Jeff Frost wrote:

> Looks like vacuum verbose doesn't report the number of relations
> necessary on version 8.2.7.  It just reports the max_fsm_relations
> value instead:
>
> INFO:  free space map contains 113311 pages in 10000 relations
> DETAIL:  A total of 252816 page slots are in use (including overhead).
> 252816 page slots are required to track all free space.
> Current limits are:  600000 page slots, 10000 relations, using 4587
> kB.
> NOTICE:  max_fsm_relations(10000) equals the number of relations
> checked
> HINT:  You have at least 10000 relations.  Consider increasing the
> configuration parameter "max_fsm_relations".
> VACUUM
>
> postgres=# show server_version;
>  server_version
> ----------------
>  8.2.7
>
> Does it do this in more recent versions of 8.2 or 8.3?
>
> --
> Jeff Frost, Owner     <jeff@frostconsultingllc.com>
> Frost Consulting, LLC     http://www.frostconsultingllc.com/
> Phone: 916-647-6411    FAX: 916-405-4032
>
> --
> Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-admin


Re: vacuum verbose relations reporting

От
Jeff Frost
Дата:
On Tue, 26 Aug 2008, Carol Walter wrote:

> On Aug 26, 2008, at 3:09 PM, Jeff Frost wrote:
>
>> Looks like vacuum verbose doesn't report the number of relations necessary
>> on version 8.2.7.  It just reports the max_fsm_relations value instead:
>>
>> INFO:  free space map contains 113311 pages in 10000 relations
>> DETAIL:  A total of 252816 page slots are in use (including overhead).
>> 252816 page slots are required to track all free space.
>> Current limits are:  600000 page slots, 10000 relations, using 4587 kB.
>> NOTICE:  max_fsm_relations(10000) equals the number of relations checked
>> HINT:  You have at least 10000 relations.  Consider increasing the
>> configuration parameter "max_fsm_relations".
>> VACUUM
>>
>> postgres=# show server_version;
>> server_version
>> ----------------
>> 8.2.7
>>
>> Does it do this in more recent versions of 8.2 or 8.3?

> If I understand your question, you might need to turn up log_min_messages to
> debug1 otherwise you won't see the relations.  I had the system set to
> autovacuum and I couldn't see that it was doing it until I made this change.
>

Hi Carol,

No I actually mean that this part:
>> Current limits are:  600000 page slots, 10000 relations, using 4587 kB.
>> NOTICE:  max_fsm_relations(10000) equals the number of relations checked
>> HINT:  You have at least 10000 relations.  Consider increasing the

Just tells me that I'm equal or greater than max_fsm_relations.  But vacuum
verbose does tell me how many page_slots are in use even when it's greater
than max_fsm_pages, so you know what value to use in postgresql.conf for the
fsm settings.

--
Jeff Frost, Owner     <jeff@frostconsultingllc.com>
Frost Consulting, LLC     http://www.frostconsultingllc.com/
Phone: 916-647-6411    FAX: 916-405-4032

Re: vacuum verbose relations reporting

От
Tom Lane
Дата:
Jeff Frost <jeff@frostconsultingllc.com> writes:
> No I actually mean that this part:
> Current limits are:  600000 page slots, 10000 relations, using 4587 kB.
> NOTICE:  max_fsm_relations(10000) equals the number of relations checked
> HINT:  You have at least 10000 relations.  Consider increasing the

> Just tells me that I'm equal or greater than max_fsm_relations.

Yeah, because that's all that can be told from the contents of the
shared free space map: it's full, but we have no idea how many other
tables might have been competing for space in it.

> But vacuum verbose does tell me how many page_slots are in use even
> when it's greater than max_fsm_pages, so you know what value to use in
> postgresql.conf for the fsm settings.

Well, no :-(.  What that number is is the number of page slots that the
relations that are in the FSM would have liked to have --- we have the
"request" size as well as the "allocated" size for each such relation.
We have no idea how many slots the relations that aren't in FSM might
have liked to have.

This whole design is pretty awful, of course (I can say that because it
was my design :-().  There is work in progress to make the fixed-size
FSM go away entirely in 8.4, which will certainly be a boon to DBAs.

            regards, tom lane

Re: vacuum verbose relations reporting

От
Jeff Frost
Дата:
On Tue, 26 Aug 2008, Tom Lane wrote:

> Jeff Frost <jeff@frostconsultingllc.com> writes:
>> No I actually mean that this part:
>> Current limits are:  600000 page slots, 10000 relations, using 4587 kB.
>> NOTICE:  max_fsm_relations(10000) equals the number of relations checked
>> HINT:  You have at least 10000 relations.  Consider increasing the
>
>> Just tells me that I'm equal or greater than max_fsm_relations.
>
> Yeah, because that's all that can be told from the contents of the
> shared free space map: it's full, but we have no idea how many other
> tables might have been competing for space in it.
>
>> But vacuum verbose does tell me how many page_slots are in use even
>> when it's greater than max_fsm_pages, so you know what value to use in
>> postgresql.conf for the fsm settings.
>
> Well, no :-(.  What that number is is the number of page slots that the
> relations that are in the FSM would have liked to have --- we have the
> "request" size as well as the "allocated" size for each such relation.
> We have no idea how many slots the relations that aren't in FSM might
> have liked to have.
>
> This whole design is pretty awful, of course (I can say that because it
> was my design :-().  There is work in progress to make the fixed-size
> FSM go away entirely in 8.4, which will certainly be a boon to DBAs.

Tom, is there an easy (or hard) way to count relations from all DBs by using
the system catalogs?

--
Jeff Frost, Owner     <jeff@frostconsultingllc.com>
Frost Consulting, LLC     http://www.frostconsultingllc.com/
Phone: 916-647-6411    FAX: 916-405-4032

Re: vacuum verbose relations reporting

От
Alvaro Herrera
Дата:
Jeff Frost wrote:

> Tom, is there an easy (or hard) way to count relations from all DBs by
> using the system catalogs?

Just do a count(*) from pg_class where relkind in ('r', 't', 'i'), and
sum across all databases (you need to connect to each one).

(Actually you only need to count indexes that are btrees, if you need
such a distinction.  Other indexes do not use the FSM as far as I know).

--
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Re: vacuum verbose relations reporting

От
Jeff Frost
Дата:
Alvaro Herrera wrote:
Jeff Frost wrote:
 
Tom, is there an easy (or hard) way to count relations from all DBs by 
using the system catalogs?   
Just do a count(*) from pg_class where relkind in ('r', 't', 'i'), and
sum across all databases (you need to connect to each one).

(Actually you only need to count indexes that are btrees, if you need
such a distinction.  Other indexes do not use the FSM as far as I know). 
Perfect, so here's a little script that does the trick then:

#!/bin/sh

PSQL=/usr/bin/psql
DATABASES=$($PSQL -lt |  awk {'print $1'} | grep -v template0 )
RELATIONS=0

for DB in $DATABASES; do
    RELATIONS=$(($RELATIONS + $($PSQL --tuples-only --command "select count(*) from pg_class where relkind IN ('r', 't', 'i');" $DB) ))
done

echo $RELATIONS

Thanks folks!

-- 
Jeff Frost, Owner 	<jeff@frostconsultingllc.com>
Frost Consulting, LLC 	http://www.frostconsultingllc.com/
Phone: 916-647-6411	FAX: 916-405-4032

Re: vacuum verbose relations reporting

От
Jeff Frost
Дата:


Jeff Frost wrote:
Alvaro Herrera wrote:
Jeff Frost wrote:
 
Tom, is there an easy (or hard) way to count relations from all DBs by 
using the system catalogs?   
Just do a count(*) from pg_class where relkind in ('r', 't', 'i'), and
sum across all databases (you need to connect to each one).

(Actually you only need to count indexes that are btrees, if you need
such a distinction.  Other indexes do not use the FSM as far as I know). 
Perfect, so here's a little script that does the trick then:

#!/bin/sh

PSQL=/usr/bin/psql
DATABASES=$($PSQL -lt |  awk {'print $1'} | grep -v template0 )
RELATIONS=0

for DB in $DATABASES; do
    RELATIONS=$(($RELATIONS + $($PSQL --tuples-only --command "select count(*) from pg_class where relkind IN ('r', 't', 'i');" $DB) ))
done

echo $RELATIONS

I guess this isn't entirely accurate, as the above script returns 35883, but vacuum verbose returns:

INFO:  free space map contains 111435 pages in 10005 relations

If I take out the toast tables and indexes, I get a result much closer to what vacuum verbose returns: 10626  which might just be because the vacuum verbose ran a few hours ago.

So, the question is, do the FSM settings take into account toast tables and indexes as Alvaro suggested and vacuum verbose isn't properly reporting on it?


-- 
Jeff Frost, Owner 	<jeff@frostconsultingllc.com>
Frost Consulting, LLC 	http://www.frostconsultingllc.com/
Phone: 916-647-6411	FAX: 916-405-4032

Re: vacuum verbose relations reporting

От
Alvaro Herrera
Дата:
Jeff Frost wrote:

> I guess this isn't entirely accurate, as the above script returns 35883,
> but vacuum verbose returns:
>
> INFO:  free space map contains 111435 pages in 10005 relations

Well, what this means is that not every single table has useful free
space ...

--
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Re: vacuum verbose relations reporting

От
Jeff Frost
Дата:
On Sun, 31 Aug 2008, Alvaro Herrera wrote:

> Jeff Frost wrote:
>
>> I guess this isn't entirely accurate, as the above script returns 35883,
>> but vacuum verbose returns:
>>
>> INFO:  free space map contains 111435 pages in 10005 relations
>
> Well, what this means is that not every single table has useful free
> space ...

Ohh...naturally.  So, max_fsm_relations only cares about relations that have
free space to track, and not all relations.  So, is there a way to compute
the number of relatinos with useful free space?


--
Jeff Frost, Owner     <jeff@frostconsultingllc.com>
Frost Consulting, LLC     http://www.frostconsultingllc.com/
Phone: 916-647-6411    FAX: 916-405-4032

Postgres client Configuration

От
Napolean Periathambi
Дата:
Is there any ways to include wildcard in pg_hba.conf file to accept all postgres clients on the network rather than
specifyingspecific IP addresses on this file? 

Any assistance is appreciated

Thanks
Napolean



Re: Postgres client Configuration

От
"Kevin Grittner"
Дата:
>>> Napolean Periathambi <Napolean.Periathambi@VSOFTCORP.COM> wrote:

> Is there any ways to include wildcard in pg_hba.conf file to accept
all
> postgres clients on the network rather than specifying specific IP
addresses
> on this file?

# CIDR-ADDRESS specifies the set of hosts the record matches.
# It is made up of an IP address and a CIDR mask that is an integer
# (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that specifies
# the number of significant bits in the mask.  Alternatively, you can
write
# an IP address and netmask in separate columns to specify the set of
hosts.

In other words, it says how many bits of the IP address need to match.

For example:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         postgres                          ident sameuser
local   cir         all                               md5

# IPv4 local connections:
host    cir         all         127.0.0.1/32          md5
# IPv6 local connections:
host    cir         all         ::1/128               md5

# Programmer/analyst network segment
host    cir         all         165.219.88.0/22       md5
# STEP network segment
host    cir         all         165.219.80.0/24       md5
# TECH network segment
host    cir         all         165.219.95.0/24       md5

-Kevin