Re: [HACKERS] [ADMIN] Excessive growth of pg_attribute and other system tables

2005-03-31 Thread Tom Lane
Steve Crawford [EMAIL PROTECTED] writes:
 On Monday 21 March 2005 11:40 am, Tom Lane wrote:
 However, given that there are 9334 tuples in 82282 pages, I'd say
 that autovacuum has already failed Steve rather badly :-(.  There
 shouldn't be more than a couple hundred pages given that number of
 rows.  Perhaps the FSM settings are too small?

 Results time. FSM settings were too small but the real problem seems 
 to be that pg_autovacuum isn't getting the job done.

The light just went on ... system catalog updates don't generate
statistics reports.  Hence, autovacuum doesn't know any work is needed.

Should we fix that, or change autovacuum to special-case the system
catalogs somehow, or ???

regards, tom lane

---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]


Re: [HACKERS] [ADMIN] Excessive growth of pg_attribute and other system tables

2005-03-31 Thread Tom Lane
I wrote:
 The light just went on ... system catalog updates don't generate
 statistics reports.  Hence, autovacuum doesn't know any work is needed.

The above claim is too strong --- they do normally generate stats
updates.  However, in a simple test I observed that
pg_stat_all_tables.n_tup_del did not seem to increment for the deletes
that occur when a temp table is dropped during backend exit.  (Most
likely we aren't flushing out the final stats messages...)

Steve, is your app in the habit of creating lots of temp tables that are
not dropped explicitly?  That would explain why you are getting bit more
than other people.

regards, tom lane

---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS] [ADMIN] Excessive growth of pg_attribute and other system tables

2005-03-31 Thread Steve Crawford
On Thursday 31 March 2005 12:06 pm, Tom Lane wrote:
 I wrote:
  The light just went on ... system catalog updates don't generate
  statistics reports.  Hence, autovacuum doesn't know any work is
  needed.

 The above claim is too strong --- they do normally generate stats
 updates.  However, in a simple test I observed that
 pg_stat_all_tables.n_tup_del did not seem to increment for the
 deletes that occur when a temp table is dropped during backend
 exit.  (Most likely we aren't flushing out the final stats
 messages...)

 Steve, is your app in the habit of creating lots of temp tables
 that are not dropped explicitly?  That would explain why you are
 getting bit more than other people.

Yes, various processes create in total well over 100 temporary tables 
every hour. None of them are explicitly dropped.

Cheers,
Steve


---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


Re: [HACKERS] [ADMIN] Excessive growth of pg_attribute and other system tables

2005-03-31 Thread Matthew T. O'Connor
Tom Lane wrote:
Steve Crawford [EMAIL PROTECTED] writes:
 

On Monday 21 March 2005 11:40 am, Tom Lane wrote:
   

However, given that there are 9334 tuples in 82282 pages, I'd say
that autovacuum has already failed Steve rather badly :-(.  There
shouldn't be more than a couple hundred pages given that number of
rows.  Perhaps the FSM settings are too small?
 

 

Results time. FSM settings were too small but the real problem seems 
to be that pg_autovacuum isn't getting the job done.
   

The light just went on ... system catalog updates don't generate
statistics reports.  Hence, autovacuum doesn't know any work is needed.
Should we fix that, or change autovacuum to special-case the system
catalogs somehow, or ???
 

Really?!?!?!?  Wow, if that is true, that is a big gaping hole in the 
autovacuum design.  Is that true for all types of system catalog 
updates?  The reason I ask is that the stats system is reporting at 
least some of activity on pg_attribute in this example.  So why would it 
report some but not all?

Is there any chance fixing the stats system to include system catalog 
updates would be simple enough to put into the 8.0.x branch?  I don't 
know a another way for pg_autovacuum know if it's time for an vacuum.

Hopefully the autovacuum in 8.1 will be a fairly different animal.
---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]


Re: [HACKERS] [ADMIN] Excessive growth of pg_attribute and other system tables

2005-03-31 Thread Tom Lane
Steve Crawford [EMAIL PROTECTED] writes:
 On Thursday 31 March 2005 12:06 pm, Tom Lane wrote:
 Steve, is your app in the habit of creating lots of temp tables
 that are not dropped explicitly?  That would explain why you are
 getting bit more than other people.

 Yes, various processes create in total well over 100 temporary tables 
 every hour. None of them are explicitly dropped.

Try this patch (it's against 8.0, but applies with some fuzz to 7.4
too).

regards, tom lane

Index: pgstat.c
===
RCS file: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v
retrieving revision 1.87.4.1
diff -c -r1.87.4.1 pgstat.c
*** pgstat.c25 Mar 2005 00:35:14 -  1.87.4.1
--- pgstat.c31 Mar 2005 23:12:21 -
***
*** 160,165 
--- 160,166 
  static void pgstat_recvbuffer(void);
  static void pgstat_exit(SIGNAL_ARGS);
  static void pgstat_die(SIGNAL_ARGS);
+ static void pgstat_beshutdown_hook(int code, Datum arg);
  
  static intpgstat_add_backend(PgStat_MsgHdr *msg);
  static void pgstat_sub_backend(int procpid);
***
*** 670,675 
--- 671,695 
  
pgstat_setheader(msg.m_hdr, PGSTAT_MTYPE_BESTART);
pgstat_send(msg, sizeof(msg));
+ 
+   /*
+* Set up a process-exit hook to ensure we flush the last batch of
+* statistics to the collector.
+*/
+   on_proc_exit(pgstat_beshutdown_hook, 0);
+ }
+ 
+ /*
+  * Flush any remaining statistics counts out to the collector at process
+  * exit.   Without this, operations triggered during backend exit (such as
+  * temp table deletions) won't be counted.  This is an on_proc_exit hook,
+  * not on_shmem_exit, so that everything interesting must have happened
+  * already.
+  */
+ static void
+ pgstat_beshutdown_hook(int code, Datum arg)
+ {
+   pgstat_report_tabstat();
  }
  
  

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] [ADMIN] Excessive growth of pg_attribute and other system tables

2005-03-31 Thread Qingqing Zhou

Tom Lane [EMAIL PROTECTED] writes
 Steve Crawford [EMAIL PROTECTED] writes:
  On Monday 21 March 2005 11:40 am, Tom Lane wrote:
  However, given that there are 9334 tuples in 82282 pages, I'd say
  that autovacuum has already failed Steve rather badly :-(.  There
  shouldn't be more than a couple hundred pages given that number of
  rows.  Perhaps the FSM settings are too small?


Seems this is another question pointing to the inproper setting of
can-be-avoided shared memory parameters. Maybe we should eliminate GUC
parameters related to the FSM. Can we follow Alvaro's idea like spilling
some data of FSM into disk while keeping the indices and maybe part of data
in the memory? So no free page would be discarded due to no space to record
them in FSM? Also, in this handling, efficiency should not be a problem.

Regards,
Qingqing



---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]