powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / В таблицу не приходит Autovacuum
13 сообщений из 13, страница 1 из 1
В таблицу не приходит Autovacuum
    #40050315
Sceers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Подскажите куда смотреть для решения проблемы. В таблицу не приходит автовакуум.

PG 12.2

таблица some_db.document;
у нее установлены опции автоотчистки:

Код: plaintext
1.
Options: autovacuum_analyze_scale_factor=0.02, autovacuum_enabled=true, autovacuum_vacuum_scale_factor=0.03,
autovacuum_vacuum_threshold=2000000, toast.autovacuum_vacuum_scale_factor=0.1

запрос:

Код: plsql
1.
2.
 SELECT schemaname, relname, n_live_tup, n_dead_tup, last_autovacuum
FROM pg_stat_all_tables order by n_dead_tup desc Limit 1;


возвращает:
Код: plaintext
1.
2.
schemaname |      relname       | n_live_tup | n_dead_tup |        last_autovacuum
------------+--------------------+------------+------------+-------------------------------
 pg_toast   | pg_toast_326615196 | 2262583676 |  332771524 | 2021-02-25 18:52:02.696251+03

reltuples для таблицы:

Код: plsql
1.
select reltuples from pg_class where relname='pg_toast_326615196';


возвращает:

Код: plaintext
1.
2.
3.
   reltuples
---------------
 2.1701066e+09

как я понимаю автовакум должен придти так как:

Код: plaintext
332771524 (n_dead_tup) >  2000000 (autovacuum_vacuum_threshold) + 0.1 (toast.autovacuum_vacuum_scale_factor) * 2.1701066e+09 (reltuples
)

но он не приходит, в логах ошибок нет.

При этом в логах видно, что автовакум приходит в другую БД. То есть процесс работает, статистика отрабатывает, но таблица не чистится.
Подскажите куда смотреть ?
...
Рейтинг: 0 / 0
В таблицу не приходит Autovacuum
    #40050364
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sceers,

А настойки точно такие?

Покажите, что показывает select reloptions from pg_class where relname = 'document' -- для самой таблиц, а не toast-части.
И что на уровне системы select name, setting, unit from pg_settings where name ~ 'autovacuum';
...
Рейтинг: 0 / 0
В таблицу не приходит Autovacuum
    #40050392
Sceers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов,

Спасибо за ответ !

Запрос:
Код: plsql
1.
select reloptions from pg_class where relname = 'document';



Вернул:

Код: plaintext
1.
2.
---------------------------
 {autovacuum_analyze_scale_factor=0.02,autovacuum_enabled=true,autovacuum_vacuum_scale_factor=0.03,autovacuum
_vacuum_threshold=2000000}

запрос:

Код: plsql
1.
select name, setting, unit from pg_settings where name ~ 'autovacuum'; 



вернул:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
                name                 |  setting  | unit
-------------------------------------+-----------+------
 autovacuum                          | on        |
 autovacuum_analyze_scale_factor     | 0.05      |
 autovacuum_analyze_threshold        | 50        |
 autovacuum_freeze_max_age           | 200000000 |
 autovacuum_max_workers              | 8         |
 autovacuum_multixact_freeze_max_age | 400000000 |
 autovacuum_naptime                  | 10        | s
 autovacuum_vacuum_cost_delay        | 2         | ms
 autovacuum_vacuum_cost_limit        | -1        |
 autovacuum_vacuum_scale_factor      | 0.01      |
 autovacuum_vacuum_threshold         | 50        |
 autovacuum_work_mem                 | -1        | kB
 log_autovacuum_min_duration         | 0         | ms
(13 rows)

Основной объем данных в toast таблице. Как я понимаю именно настройки toast должны применяться, или это не так ?.
...
Рейтинг: 0 / 0
В таблицу не приходит Autovacuum
    #40050393
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда наверное надо смотреть

Код: sql
1.
select reloptions from pg_class where relname = 'pg_toast_326615196' ;
...
Рейтинг: 0 / 0
В таблицу не приходит Autovacuum
    #40050439
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sceers,

А чем заняты воркеры автоочистки в pg_stat_activity и сколько их всего выделено? Может быть такое что автоочистка застряла на других больших таблицах и до этой ещё не дошла(25.02 всё-таки доходила)?
...
Рейтинг: 0 / 0
В таблицу не приходит Autovacuum
    #40050518
Sceers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guzya
тогда наверное надо смотреть

Код: sql
1.
select reloptions from pg_class where relname = 'pg_toast_326615196' ;



Запрос:
Код: plsql
1.
select reloptions from pg_class where relname = 'pg_toast_326615196' ;



Вернул:

Код: plaintext
{autovacuum_vacuum_scale_factor=0.1}
...
Рейтинг: 0 / 0
В таблицу не приходит Autovacuum
    #40050521
Sceers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов
Sceers,

А чем заняты воркеры автоочистки в pg_stat_activity и сколько их всего выделено? Может быть такое что автоочистка застряла на других больших таблицах и до этой ещё не дошла(25.02 всё-таки доходила)?


Да вы правы 25.02 автоочистка проходила
и в какой то момент перестала
по логам видно что automatic vacuum приходит , но только в одну таблицу , примерно каждый час
команда :

Код: plaintext
grep 'vacuum ' /opt/pg_logs_tmp/postgresql-2021-03-04.log

Вывод:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
2021-03-04 00:49:17 MSK [1786]:[1-1] user=,db=,client=#hLOG:  automatic vacuum of table "mamonsu.public.mamonsu_timestamp_master_2_6_2": index scans: 0
2021-03-04 01:40:18 MSK [15445]:[1-1] user=,db=,client=#hLOG:  automatic vacuum of table "mamonsu.public.mamonsu_timestamp_master_2_6_2": index scans: 0
2021-03-04 02:31:22 MSK [4240]:[1-1] user=,db=,client=#hLOG:  automatic vacuum of table "mamonsu.public.mamonsu_timestamp_master_2_6_2": index scans: 0
2021-03-04 03:22:36 MSK [29297]:[1-1] user=,db=,client=#hLOG:  automatic vacuum of table "mamonsu.public.mamonsu_timestamp_master_2_6_2": index scans: 0
2021-03-04 04:13:36 MSK [23513]:[1-1] user=,db=,client=#hLOG:  automatic vacuum of table "mamonsu.public.mamonsu_timestamp_master_2_6_2": index scans: 0
2021-03-04 05:04:38 MSK [18280]:[1-1] user=,db=,client=#hLOG:  automatic vacuum of table "mamonsu.public.mamonsu_timestamp_master_2_6_2": index scans: 0
2021-03-04 05:55:42 MSK [11496]:[1-1] user=,db=,client=#hLOG:  automatic vacuum of table "mamonsu.public.mamonsu_timestamp_master_2_6_2": index scans: 0
2021-03-04 06:46:45 MSK [4571]:[1-1] user=,db=,client=#hLOG:  automatic vacuum of table "mamonsu_timestamp_master_2_6_2": index scans: 0

Как я это понимаю:
1) Сам процесс автовакума работает, он приходит, но в другую БД
2) По логам видно что приходит раз в час, то есть не занят какой то большой таблицей

Но почему перестал приходить в нужную таблицу, я пока не понимаю, а очень хочется.

Таблица mamonsu_timestamp_master_2_6_2 занимает 56 кБ:

Код: plsql
1.
SELECT pg_size_pretty(pg_total_relation_size('public.mamonsu_timestamp_master_2_6_2'));



Вывод:

Код: plaintext
1.
2.
3.
4.
 pg_size_pretty
----------------
 56 kB
(1 row)

Можно ли как то отключить автовакум для конкретной БД ? или еще чего.
Всю голову сломал разбираясь.
...
Рейтинг: 0 / 0
В таблицу не приходит Autovacuum
    #40050526
Sceers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sceers,

тут ошибся немного:

авторпо логам видно что automatic vacuum приходит , но только в одну таблицу , примерно каждый час

автовакуум приходит не в другую таблицу, а в другую БД. То есть 25.02 автовакум перестал приходить в конкретную БД и ко всем таблицам с ней связанным.

Что еще проверил - сбор статистики работает, при обновлении запроса:

Код: plsql
1.
2.
 SELECT schemaname, relname, n_live_tup, n_dead_tup, last_autovacuum
FROM pg_stat_all_tables order by n_dead_tup desc Limit 1;



меняется количество "мертвых " кортежей
...
Рейтинг: 0 / 0
В таблицу не приходит Autovacuum
    #40050530
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sceers,

в логах ошибок точно нет? возможно стоит проверить логи за более старые даты. в pg_stat_activity и pg_stat_progress_vacuum не смотрели, есть ли запущенные autovacuum/autoanalyze процессы в данный момент, сколько их и чем они заняты?
...
Рейтинг: 0 / 0
В таблицу не приходит Autovacuum
    #40050537
Sceers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexius
Sceers,

в логах ошибок точно нет? возможно стоит проверить логи за более старые даты. в pg_stat_activity и pg_stat_progress_vacuum не смотрели, есть ли запущенные autovacuum/autoanalyze процессы в данный момент, сколько их и чем они заняты?


по логам видно что последний раз автовакум приходил в нужную БД 26.02

последний записи:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
2021-02-26 17:08:31 MSK [21260]:[1-1] user=,db=,client=#hLOG:  automatic vacuum of table "some_db.sa
ve_point": index scans: 1
        pages: 0 removed, 3 remain, 0 skipped due to pins, 0 skipped frozen
        tuples: 53 removed, 3 remain, 0 are dead but not yet removable, oldest xmin: 3602045408
        buffer usage: 4573 hits, 9248 misses, 0 dirtied
        avg read rate: 464.212 MB/s, avg write rate: 0.000 MB/s
        system usage: CPU: user: 0.02 s, system: 0.03 s, elapsed: 0.15 s
2021-02-26 17:08:31 MSK [21260]:[2-1] user=,db=,client=#hLOG:  automatic analyze of table "some_db.save_point" system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s

2021-02-26 17:08:37 MSK [22186]:[1-1] user=,db=,client=#hLOG:  automatic aggressive vacuum to prevent wraparound of table "mamonsu.pg_catalog.pg_db_role_setting": index scans: 0
        pages: 0 removed, 0 remain, 0 skipped due to pins, 0 skipped frozen
        tuples: 0 removed, 0 remain, 0 are dead but not yet removable, oldest xmin: 3602048061
        buffer usage: 14 hits, 5 misses, 2 dirtied
        avg read rate: 20.756 MB/s, avg write rate: 8.302 MB/s
        system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s

после этого автовакум перестал ходить в some_db

запрос:
Код: plsql
1.
select * from pg_stat_progress_vacuum;



- пусто

запрос:
Код: plsql
1.
select count(*) from pg_stat_activity where query like 'autovacuum:%';



- пусто

выполнил в ручную vacuum (verbose) table - вакуум выполнился. Но почему не приходит автовакум - не понимаю (
...
Рейтинг: 0 / 0
В таблицу не приходит Autovacuum
    #40050567
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sceers,

Попробуйте в some_db провести эксперимент.
Создайте табличку, добавте в неё 100 строк, затем все строки удалите. В течение 10 секунд (ваш измененный autovacuum_naptime) в базу должна прийти aвтоочистка, подождите это время и посмотрите в pg_stat_all_tables.

Помониторьте pg_stat_progress_vacuum на это время, там точно меньше 8 строчек(autovacuum_max_workers)?
...
Рейтинг: 0 / 0
В таблицу не приходит Autovacuum
    #40050647
Sceers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов
Sceers,

Попробуйте в some_db провести эксперимент.
Создайте табличку, добавте в неё 100 строк, затем все строки удалите. В течение 10 секунд (ваш измененный autovacuum_naptime) в базу должна прийти aвтоочистка, подождите это время и посмотрите в pg_stat_all_tables.

Помониторьте pg_stat_progress_vacuum на это время, там точно меньше 8 строчек(autovacuum_max_workers)?


Спасибо за совет, так и сделаю.
Так же предложили вариант выполнить
Код: plaintext
vacuumdb --all --analyze-in-stages
вроде как есть проблемы с статистикой, должен помочь.
Но сначала проверю ваш совет.
...
Рейтинг: 0 / 0
В таблицу не приходит Autovacuum
    #40050847
Sceers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sceers,

Итак результат.
Выполнив
Код: plaintext
vacuumdb --all --analyze-in-stages

процессы автовакуума за шевелились.
В логах появилась информация, и вроде все ожило.
Похоже каким то образом сломалась статистика, но почему - я не знаю.

В pg_stat_activity
появились процессы autovacuum worker.
Всем спасибо за помощь, очень помогли !
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / В таблицу не приходит Autovacuum
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]