Re: Tracking table modifications / table stats - Mailing list pgsql-general

From Merlin Moncure
Subject Re: Tracking table modifications / table stats
Date
Msg-id AANLkTimn58GWwR-xJruVXQkAdH5Vi3nRJTYiS0xvODpL@mail.gmail.com
Whole thread Raw
In response to Tracking table modifications / table stats  (Derrick Rice <derrick.rice@gmail.com>)
List pgsql-general
On Thu, Mar 3, 2011 at 11:00 AM, Derrick Rice <derrick.rice@gmail.com> wrote:
> Hey folks,
>
> I was looking through the contrib modules with 8.4 and hoping to find
> something that satisfies my itch.
> http://www.postgresql.org/docs/8.4/static/pgstatstatements.html comes the
> closest.
>
> I'm inheriting a database which has mostly unknown usage patterns, and would
> like to figure them out so that I can allocate tablespaces and set
> autovacuum settings appropriately.  To do this, it seems I need to know (at
> least) the number of rows read, rows updated, rows deleted, and rows
> inserted for each table (over time, or until reset).
>
> I suppose things like disk usage and CPU usage would be interesting as well,
> but I'm somewhat less concerned with those.  For one, CPU usage can't be
> tied to a table as easily and is more about query optimization than
> PostgreSQL configuration (excluding cost coefficients and memory size
> settings).  For the other, disk usage can be mostly inferred from the row
> size and and number of operations per table (this does exclude seq. scans
> and heavy heavy index use, though).  I realize those statements are fuzzy
> and short-sighted, but I'm trying to get "good enough" information, not
> optimize a space shuttle.
>
> There's no way I'm the first person to feel the need for this.  Is there a
> doc or wiki which gives some recommendations?  I'd like to avoid parsing
> logs or installing triggers.  I'd also like to avoid heavy statement-level
> tracking like the above mentioned contrib does (sounds expensive, and I'm
> not sure the users have parameterized SQL).


The old tried and true method of slow query logging
(min_statement_duration) works wonders.  Usually in a typical system
10% of the queries are doing 90% of the work.

If I'm coming into a new database created by someone else, priority #1
is to get logging under control: make sure it's being captured,
rotated properly, etc.  If there are lots of garbage errors being
dropped in there, try fixing them so that the logs become useful.

merlin

pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: Why count(*) doest use index?
Next
From: Andy Colson
Date:
Subject: Re: Tracking table modifications / table stats