Thread: There is a statistic table?

There is a statistic table?

From
"waldomiro"
Date:
Helo everbody!

I need to know how much the postgres is going to disk to get blocks and how much it is going to cache? witch is the
statistictable and what is the field that indicates blocks reads from the disk and the memory cache? 

Another question is, what is the best memory configuration to keep more data in cache?

Thanks,

Waldomiro

Re: There is a statistic table?

From
Scott Marlowe
Date:
On Thu, Oct 15, 2009 at 9:33 PM, waldomiro <waldomiro@shx.com.br> wrote:
> Helo everbody!
>
> I need to know how much the postgres is going to disk to get blocks and how much it is going to cache? witch is the
statistictable and what is the field that indicates blocks reads from the disk and the memory cache? 

Yep.  Use psql to access postgres:

psql dbnamehere
\d pg_stat<tab><tab>

and you should get a list like:

pg_stat_activity              pg_statio_all_indexes
pg_statio_sys_tables          pg_statistic_relid_att_index
pg_stat_user_tables
pg_stat_all_indexes           pg_statio_all_sequences
pg_statio_user_indexes        pg_stats
pg_stat_all_tables            pg_statio_all_tables
pg_statio_user_sequences      pg_stat_sys_indexes
pg_stat_bgwriter              pg_statio_sys_indexes
pg_statio_user_tables         pg_stat_sys_tables
pg_stat_database              pg_statio_sys_sequences
pg_statistic                  pg_stat_user_indexes

just select * from them and you can get an idea what is stored.
Interesting ones right off the bat are:

pg_stat_user_tables
pg_stat_user_indexes
pg_stat_all_tables
pg_stat_all_indexes

but feel free to look around.

> Another question is, what is the best memory configuration to keep more data in cache?

OS or pgsql cache?  It's generally better to let the OS do the
majority of caching unless you are sure you can pin shared_buffers in
memory, since allocating too much to shared_buffers may result in
unused portions getting swapped out by some OSes which have aggressive
swapping behaviour.  Set shared_buggers to 2G or 1/4 of memory
whichever is smaller to start with, then monitor and adjust from
there.

Re: There is a statistic table?

From
"Albe Laurenz"
Date:
waldomiro wrote:
> I need to know how much the postgres is going to disk to get
> blocks and how much it is going to cache? witch is the
> statistic table and what is the field that indicates blocks
> reads from the disk and the memory cache?

The view pg_statio_all_tables will show you the number of
disk reads and buffer hits per table.

There are other statistics views, see
http://www.postgresql.org/docs/8.4/static/monitoring-stats.html#MONITORING-STATS-VIEWS

> Another question is, what is the best memory configuration to
> keep more data in cache?

That's easy - the greater shared_buffers is, the more cache you have.

Another option is to choose shared_buffers not too large and let
the filesystem cache buffer the database for you.

Yours,
Laurenz Albe

Re: There is a statistic table?

From
Scott Carey
Date:


On 10/15/09 11:27 PM, "Albe Laurenz" <laurenz.albe@wien.gv.at> wrote:

> waldomiro wrote:
>> I need to know how much the postgres is going to disk to get
>> blocks and how much it is going to cache? witch is the
>> statistic table and what is the field that indicates blocks
>> reads from the disk and the memory cache?
>
> The view pg_statio_all_tables will show you the number of
> disk reads and buffer hits per table.

My understanding is that it will not show that.  Since postgres can't
distinguish between a read that comes from OS cache and one that goes to
disk, you're out of luck on knowing anything exact.
The above shows what comes from shared_buffers versus the OS, however.  And
if reads are all buffered, they are not coming from disk.  Only those that
come from the OS _may_ have come from disk.

>
> There are other statistics views, see
> http://www.postgresql.org/docs/8.4/static/monitoring-stats.html#MONITORING-STA
> TS-VIEWS
>
>> Another question is, what is the best memory configuration to
>> keep more data in cache?
>
> That's easy - the greater shared_buffers is, the more cache you have.
>
> Another option is to choose shared_buffers not too large and let
> the filesystem cache buffer the database for you.
>
> Yours,
> Laurenz Albe
>
> --
> Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-performance
>


Re: There is a statistic table?

From
Scott Marlowe
Date:
On Wed, Oct 21, 2009 at 11:17 AM, Scott Carey <scott@richrelevance.com> wrote:
>
>
>
> On 10/15/09 11:27 PM, "Albe Laurenz" <laurenz.albe@wien.gv.at> wrote:
>
>> waldomiro wrote:
>>> I need to know how much the postgres is going to disk to get
>>> blocks and how much it is going to cache? witch is the
>>> statistic table and what is the field that indicates blocks
>>> reads from the disk and the memory cache?
>>
>> The view pg_statio_all_tables will show you the number of
>> disk reads and buffer hits per table.
>
> My understanding is that it will not show that.  Since postgres can't
> distinguish between a read that comes from OS cache and one that goes to
> disk, you're out of luck on knowing anything exact.
> The above shows what comes from shared_buffers versus the OS, however.  And
> if reads are all buffered, they are not coming from disk.  Only those that
> come from the OS _may_ have come from disk.

I think he meant pg's shared_buffers not the OS kernel cache.

Re: There is a statistic table?

From
Cédric Villemain
Date:
Le jeudi 22 octobre 2009 00:06:10, Scott Marlowe a écrit :
> On Wed, Oct 21, 2009 at 11:17 AM, Scott Carey <scott@richrelevance.com>
wrote:
> > On 10/15/09 11:27 PM, "Albe Laurenz" <laurenz.albe@wien.gv.at> wrote:
> >> waldomiro wrote:
> >>> I need to know how much the postgres is going to disk to get
> >>> blocks and how much it is going to cache? witch is the
> >>> statistic table and what is the field that indicates blocks
> >>> reads from the disk and the memory cache?
> >>
> >> The view pg_statio_all_tables will show you the number of
> >> disk reads and buffer hits per table.
> >
> > My understanding is that it will not show that.  Since postgres can't
> > distinguish between a read that comes from OS cache and one that goes to
> > disk, you're out of luck on knowing anything exact.
> > The above shows what comes from shared_buffers versus the OS, however.
> >  And if reads are all buffered, they are not coming from disk.  Only
> > those that come from the OS _may_ have come from disk.
>
> I think he meant pg's shared_buffers not the OS kernel cache.
>

pgfincore let you know if block are in OS kernel cache  or not.

--
Cédric Villemain
Administrateur de Base de Données
Cel: +33 (0)6 74 15 56 53
http://dalibo.com - http://dalibo.org

Attachment