Несколько автовакуумов: АНАЛИЗ/ВАКУУМ на одной и той же таблице

#postgresql

Вопрос:

В настоящее время я использую Postgres 11. По какой-то причине всякий раз, когда я проверяю запущенные автовакуумы, я вижу несколько нескольких autovacuum: ANALYZE или autovacuum: VACUUM на одной и той же таблице.

 
postgres=# SELECT backend_type,
  pid,
  now() - xact_start AS duration,
  query,
  state
FROM pg_stat_activity
WHERE query LIKE 'autovacuum%'
ORDER BY duration DESC LIMIT 64;
   backend_type    | pid  |    duration     |                               query                               | state
------------------- ------ ----------------- ------------------------------------------------------------------- --------
 autovacuum worker | 5900 | 00:48:29.175656 | autovacuum: ANALYZE someschema.foo                      | active
 autovacuum worker | 3552 | 00:48:18.72438  | autovacuum: ANALYZE someschema.foo                                  | active
 autovacuum worker | 6122 | 00:47:29.907655 | autovacuum: VACUUM someschema.foo                            | active
 autovacuum worker | 5897 | 00:42:45.380395 | autovacuum: VACUUM someschema.bar                            | active
 autovacuum worker | 5583 | 00:38:45.406516 | autovacuum: VACUUM someschema.bar                          | active

 

DDL выглядит следующим образом:

                                   Table "someschema.foo"
      Column       | Type | Collation | Nullable | Default | Storage  | Stats target | Description
------------------- ------ ----------- ---------- --------- ---------- -------------- -------------
 foo_id    | text |           | not null |         | extended |              |
 baz_id | text |           |          |         | extended |              |
Indexes:
    "foo_pkey" PRIMARY KEY, btree (foo_id)
    "baz_reference_id_idx" UNIQUE, btree (foo_id, baz_id)
Options: autovacuum_vacuum_cost_limit=2000, autovacuum_vacuum_cost_delay=10
 

Я не уверен, что происходит, и я не могу найти свои ответы в официальных документах:

 max_worker_processes = 15
autovacuum_max_workers = 64
 

Комментарии:

1. сколько машин autovacuum_max_workers вы используете на сервере? можете ли вы добавить backed_type в свой запрос, чтобы мы знали, параллелен он или нет

2. Привет и добро пожаловать в StackOverflow. Не могли бы вы расширить свой вопрос, включив в него DDL очищаемой таблицы (это случайно не секционированная таблица?) и включить результат запроса «показать autovacuum_max_workers ;» и «показать max_worker_processes;»

3. @Cninroh, добавил я backend_type . @NikhilB Я добавил текущие значения для этих параметров