#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
Я не уверен, что происходит, и я не могу найти свои ответы в официальных документах:
- https://www.postgresql.org/docs/11/routine-vacuuming.html#AUTOVACUUM
- https://www.postgresql.org/docs/11/sql-analyze.html
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 Я добавил текущие значения для этих параметров