Thread: pg_autovacuum UPDATE_INTERVAL cmd arg

pg_autovacuum UPDATE_INTERVAL cmd arg

From
Thomas F.O'Connell
Date:
The following patch should allow UPDATE_INTERVAL to be specified on the
command line. We find this useful because we frequently deal with
thousands of tables in an environment where neither the databases nor
the tables are updated frequently. This helps allow us to cut down on
the overhead of updating the list for every other primary loop of
pg_autovacuum.

I chose -i as the command-line argument and documented it briefly in
the README.

The patch was applied to the 7.4.7 version of pg_autovacuum in contrib.

-tfo

--
Thomas F. O'Connell
Co-Founder, Information Architect
Sitening, LLC
http://www.sitening.com/
110 30th Avenue North, Suite 6
Nashville, TN 37203-6320
615-260-0005


Attachment

Re: pg_autovacuum UPDATE_INTERVAL cmd arg

From
Bruce Momjian
Date:
Patch applied.  Thanks.

I had to adjust the patch, so I attached it.

---------------------------------------------------------------------------


Thomas F.O'Connell wrote:
> The following patch should allow UPDATE_INTERVAL to be specified on the
> command line. We find this useful because we frequently deal with
> thousands of tables in an environment where neither the databases nor
> the tables are updated frequently. This helps allow us to cut down on
> the overhead of updating the list for every other primary loop of
> pg_autovacuum.
>
> I chose -i as the command-line argument and documented it briefly in
> the README.
>
> The patch was applied to the 7.4.7 version of pg_autovacuum in contrib.
>
> -tfo
>
> --
> Thomas F. O'Connell
> Co-Founder, Information Architect
> Sitening, LLC
> http://www.sitening.com/
> 110 30th Avenue North, Suite 6
> Nashville, TN 37203-6320
> 615-260-0005
>

[ Attachment, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 8: explain analyze is your friend

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: contrib/pg_autovacuum/README.pg_autovacuum
===================================================================
RCS file: /cvsroot/pgsql/contrib/pg_autovacuum/README.pg_autovacuum,v
retrieving revision 1.13
diff -c -c -r1.13 README.pg_autovacuum
*** contrib/pg_autovacuum/README.pg_autovacuum    30 Mar 2005 05:05:01 -0000    1.13
--- contrib/pg_autovacuum/README.pg_autovacuum    19 Apr 2005 03:30:38 -0000
***************
*** 123,128 ****
--- 123,132 ----
  -V vacuum scaling factor: see "Vacuum and Analyze" below.
  -a analyze base threshold: see "Vacuum and Analyze" below.
  -A analyze scaling factor: see "Vacuum and Analyze" below.
+ -i update interval: how often (in terms of iterations of the primary loop
+    over the database list) to update the database list. The default is 2,
+    which means the list will be updated before every other pass through
+    the database list.
  -L log file: Name of file to which output is submitted, otherwise STDERR
  -U username: Username pg_autovacuum will use to connect with, if not
     specified the current username is used.
***************
*** 157,162 ****
--- 161,167 ----
  -A 1   (half of -V if not specified)
  -s 300 (5 minutes)
  -S 2
+ -i 2

  The following arguments are used on Windows only:

Index: contrib/pg_autovacuum/pg_autovacuum.c
===================================================================
RCS file: /cvsroot/pgsql/contrib/pg_autovacuum/pg_autovacuum.c,v
retrieving revision 1.30
diff -c -c -r1.30 pg_autovacuum.c
*** contrib/pg_autovacuum/pg_autovacuum.c    3 Apr 2005 00:01:51 -0000    1.30
--- contrib/pg_autovacuum/pg_autovacuum.c    19 Apr 2005 03:30:39 -0000
***************
*** 1103,1108 ****
--- 1103,1109 ----
      args->analyze_base_threshold = -1;
      args->analyze_scaling_factor = -1;
      args->debug = AUTOVACUUM_DEBUG;
+     args->update_interval = UPDATE_INTERVAL;
  #ifndef WIN32
      args->daemonize = 0;
  #else
***************
*** 1157,1162 ****
--- 1158,1166 ----
              case 'A':
                  args->analyze_scaling_factor = atof(optarg);
                  break;
+             case 'i':
+                 args->update_interval = atoi(optarg);
+                 break;
              case 'c':
                  args->av_vacuum_cost_delay = atoi(optarg);
                  break;
***************
*** 1341,1346 ****
--- 1345,1352 ----
      log_entry(logbuffer, LVL_INFO);
      sprintf(logbuffer, "  args->analyze_scaling_factor=%f", args->analyze_scaling_factor);
      log_entry(logbuffer, LVL_INFO);
+     sprintf(logbuffer, "  args->update_interval=%i", args->update_interval);
+     log_entry(logbuffer, LVL_INFO);

      if (args->av_vacuum_cost_delay != -1)
          sprintf(logbuffer, "  args->av_vacuum_cost_delay=%d", args->av_vacuum_cost_delay);
***************
*** 1646,1653 ****
              }
          }

!         if (loops % UPDATE_INTERVAL == 0)        /* Update the list if it's
!                                                  * time */
              update_db_list(db_list);    /* Add and remove databases from
                                           * the list */

--- 1652,1659 ----
              }
          }

!         if (loops % args->update_interval == 0)        /* Update the list if it's
!                                                      * time */
              update_db_list(db_list);    /* Add and remove databases from
                                           * the list */

***************
*** 1661,1668 ****

              if (dbs->conn != NULL)
              {
!                 if (loops % UPDATE_INTERVAL == 0)        /* Update the list if
!                                                          * it's time */
                      update_table_list(dbs);        /* Add and remove tables
                                                   * from the list */

--- 1667,1674 ----

              if (dbs->conn != NULL)
              {
!                 if (loops % args->update_interval == 0)        /* Update the list if
!                                                              * it's time */
                      update_table_list(dbs);        /* Add and remove tables
                                                   * from the list */

Index: contrib/pg_autovacuum/pg_autovacuum.h
===================================================================
RCS file: /cvsroot/pgsql/contrib/pg_autovacuum/pg_autovacuum.h,v
retrieving revision 1.14
diff -c -c -r1.14 pg_autovacuum.h
*** contrib/pg_autovacuum/pg_autovacuum.h    2 Dec 2004 22:48:10 -0000    1.14
--- contrib/pg_autovacuum/pg_autovacuum.h    19 Apr 2005 03:30:39 -0000
***************
*** 44,49 ****
--- 44,50 ----
  {
      int            vacuum_base_threshold,
                  analyze_base_threshold,
+                 update_interval,
                  sleep_base_value,
                  debug,


Re: pg_autovacuum UPDATE_INTERVAL cmd arg

From
Bruce Momjian
Date:
Also, since this is an additional feature, I assume it isn't for 8.0.X.

---------------------------------------------------------------------------

Thomas F.O'Connell wrote:
> The following patch should allow UPDATE_INTERVAL to be specified on the
> command line. We find this useful because we frequently deal with
> thousands of tables in an environment where neither the databases nor
> the tables are updated frequently. This helps allow us to cut down on
> the overhead of updating the list for every other primary loop of
> pg_autovacuum.
>
> I chose -i as the command-line argument and documented it briefly in
> the README.
>
> The patch was applied to the 7.4.7 version of pg_autovacuum in contrib.
>
> -tfo
>
> --
> Thomas F. O'Connell
> Co-Founder, Information Architect
> Sitening, LLC
> http://www.sitening.com/
> 110 30th Avenue North, Suite 6
> Nashville, TN 37203-6320
> 615-260-0005
>

[ Attachment, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 8: explain analyze is your friend

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: pg_autovacuum UPDATE_INTERVAL cmd arg

From
Thomas F.O'Connell
Date:
Well, then it'll probably be moot for 8.1 if all goes well and autovac
gets integrated.

-tfo

--
Thomas F. O'Connell
Co-Founder, Information Architect
Sitening, LLC

Strategic Open Source: Open Your i™

http://www.sitening.com/
110 30th Avenue North, Suite 6
Nashville, TN 37203-6320
615-260-0005

On Apr 18, 2005, at 10:36 PM, Bruce Momjian wrote:

> Also, since this is an additional feature, I assume it isn't for 8.0.X.

Re: pg_autovacuum UPDATE_INTERVAL cmd arg

From
Bruce Momjian
Date:
Thomas F.O'Connell wrote:
> Well, then it'll probably be moot for 8.1 if all goes well and autovac
> gets integrated.
>

Right, and I am pledged to work to get it into 8.1.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073