58
* $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.99 2009/06/12 16:17:29 tgl Exp $
58
* $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.99.2.2 2009/08/27 17:19:31 alvherre Exp $
60
60
*-------------------------------------------------------------------------
653
653
* of a worker will continue to fail in the same way.
655
655
AutoVacuumShmem->av_signal[AutoVacForkFailed] = false;
656
pg_usleep(100000L); /* 100ms */
656
pg_usleep(1000000L); /* 1s */
657
657
SendPostmasterSignal(PMSIGNAL_START_AUTOVAC_WORKER);
2449
2449
* toast table, try the main table too. Otherwise use the GUC
2450
2450
* defaults, autovacuum's own first and plain vacuum second.
2454
vac_cost_delay = avopts->vacuum_cost_delay;
2455
vac_cost_limit = avopts->vacuum_cost_limit;
2456
freeze_min_age = avopts->freeze_min_age;
2457
freeze_table_age = avopts->freeze_table_age;
2461
/* -1 in autovac setting means use plain vacuum_cost_delay */
2462
vac_cost_delay = autovacuum_vac_cost_delay >= 0 ?
2463
autovacuum_vac_cost_delay : VacuumCostDelay;
2464
/* 0 or -1 in autovac setting means use plain vacuum_cost_limit */
2465
vac_cost_limit = autovacuum_vac_cost_limit > 0 ?
2466
autovacuum_vac_cost_limit : VacuumCostLimit;
2467
/* these do not have autovacuum-specific settings */
2468
freeze_min_age = default_freeze_min_age;
2469
freeze_table_age = default_freeze_table_age;
2453
/* -1 in autovac setting means use plain vacuum_cost_delay */
2454
vac_cost_delay = (avopts && avopts->vacuum_cost_delay >= 0)
2455
? avopts->vacuum_cost_delay
2456
: (autovacuum_vac_cost_delay >= 0)
2457
? autovacuum_vac_cost_delay
2460
/* 0 or -1 in autovac setting means use plain vacuum_cost_limit */
2461
vac_cost_limit = (avopts && avopts->vacuum_cost_limit > 0)
2462
? avopts->vacuum_cost_limit
2463
: (autovacuum_vac_cost_limit > 0)
2464
? autovacuum_vac_cost_limit
2467
/* these do not have autovacuum-specific settings */
2468
freeze_min_age = (avopts && avopts->freeze_min_age >= 0)
2469
? avopts->freeze_min_age
2470
: default_freeze_min_age;
2472
freeze_table_age = (avopts && avopts->freeze_table_age >= 0)
2473
? avopts->freeze_table_age
2474
: default_freeze_table_age;
2472
2476
tab = palloc(sizeof(autovac_table));
2473
2477
tab->at_relid = relid;
2564
2568
* sources: the passed reloptions (which could be a main table or a toast
2565
2569
* table), or the autovacuum GUC variables.
2569
vac_scale_factor = relopts->vacuum_scale_factor;
2570
vac_base_thresh = relopts->vacuum_threshold;
2571
anl_scale_factor = relopts->analyze_scale_factor;
2572
anl_base_thresh = relopts->analyze_threshold;
2573
freeze_max_age = Min(relopts->freeze_max_age,
2574
autovacuum_freeze_max_age);
2575
av_enabled = relopts->enabled;
2579
vac_scale_factor = autovacuum_vac_scale;
2580
vac_base_thresh = autovacuum_vac_thresh;
2581
anl_scale_factor = autovacuum_anl_scale;
2582
anl_base_thresh = autovacuum_anl_thresh;
2583
freeze_max_age = autovacuum_freeze_max_age;
2572
/* -1 in autovac setting means use plain vacuum_cost_delay */
2573
vac_scale_factor = (relopts && relopts->vacuum_scale_factor >= 0)
2574
? relopts->vacuum_scale_factor
2575
: autovacuum_vac_scale;
2577
vac_base_thresh = (relopts && relopts->vacuum_threshold >= 0)
2578
? relopts->vacuum_threshold
2579
: autovacuum_vac_thresh;
2581
anl_scale_factor = (relopts && relopts->analyze_scale_factor >= 0)
2582
? relopts->analyze_scale_factor
2583
: autovacuum_anl_scale;
2585
anl_base_thresh = (relopts && relopts->analyze_threshold >= 0)
2586
? relopts->analyze_threshold
2587
: autovacuum_anl_thresh;
2589
freeze_max_age = (relopts && relopts->freeze_max_age >= 0)
2590
? Min(relopts->freeze_max_age, autovacuum_freeze_max_age)
2591
: autovacuum_freeze_max_age;
2593
av_enabled = (relopts ? relopts->enabled : true);
2587
2595
/* Force vacuum if table is at risk of wraparound */
2588
2596
xidForceLimit = recentXid - freeze_max_age;