172 похожих чатов

Добрый день! Очень не силен в vacuum и просьба подсказать

вот такой момент:

имеется табличка весом 168 MB
есть настройки autovacuum:

autovacuum = on
log_autovacuum_min_duration = -1
autovacuum_max_workers = 3
autovacuum_naptime = 1min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
autovacuum_vacuum_scale_factor = 0.2
autovacuum_analyze_scale_factor = 0.1
autovacuum_freeze_max_age = 200000000
autovacuum_multixact_freeze_max_age = 400000000
autovacuum_vacuum_cost_delay = 20ms
autovacuum_vacuum_cost_limit = -1

при этом

select relname,last_vacuum, last_autovacuum, last_analyze, last_autoanalyze from pg_stat_user_tables
where relname = 'table'

показывает что процесс автовакуума проходит/проходил

но при этом: live 623142 dead 18074188

Где можно доходчиво почитать, как настроить правильно автовакуум? и возможно ли вообще его средствами избавиться от мертвых кортежей?

16 ответов

15 просмотров

https://postgrespro.ru/docs/postgresql/13/runtime-config-autovacuum

Alexander-Scherbinin Автор вопроса
Роман Жарков
https://postgrespro.ru/docs/postgresql/13/runtime-...

спасибо! и не могли бы уточнить, пожалуйста, avtovacuum все же чистит мертвые кортежы или же шринкует табличку? те я могу избежать при его использовании фулл вакуум который ее пересоздает (дефрагментирует)

Alexander Scherbinin
спасибо! и не могли бы уточнить, пожалуйста, avt...

vacuum full можно и иногда даже нужно избегать. vacuum работает как-то сложно и в двух словах это не описать :)

Alexander-Scherbinin Автор вопроса
Роман Жарков
vacuum full можно и иногда даже нужно избегать. va...

vacuum full боюсь мне совсем не подойдет, тк залочет табличку а она у меня не одна проблемная … при этом, хотелось бы конечно понять изначально поможет ли мне автовакуум, те стоит ли крутить его настройки или же сразу переключиться к неким альтернативным методам например https://reorg.github.io/pg_repack/

Alexander Scherbinin
vacuum full боюсь мне совсем не подойдет, тк залоч...

Если данные неудачно разлеглись, то autovacuum не поможет и можно сразу переходить к альтернативным методам

Alexander Scherbinin
спасибо! и не могли бы уточнить, пожалуйста, avt...

> avtovacuum все же чистит мертвые кортежы Да. > или же шринкует табличку? Нет (может "отрезать" пустой "хвост", максимум). > те я могу избежать при его использовании фулл вакуум который ее пересоздает (дефрагментирует) Если Вам autovacuum не помог от них по какой-то причине, то и VACUUM FULL не поможет, если эта причина всё ещё существует.

Alexander-Scherbinin Автор вопроса
Yaroslav Schekin
> avtovacuum все же чистит мертвые кортежы Да. ...

в общем, проанализировав метрики мониторинга пришли к выыоду что лочит walreceiver кильнул процесс walreceiver и все заработало

блин вот че все с этим вакуумом. проще базу выгрузил - загрузил. автоматом. и действий меньше и реиндексить не надо. и вакуум свои дела сделает как надо.

AtariSTEr2nd .
блин вот че все с этим вакуумом. проще базу выгруз...

> блин вот че все с этим вакуумом. Потому что autovacuum — это штатное средство maintenance в PostgreSQL. > проще базу выгрузил - загрузил. Это, фактически, VACUUM FULL "автоматом". > и реиндексить не надо Так и обычно не надо. > и вакуум свои дела сделает как надо И обычный VACUUM он, вполне возможно, не сделает (как и ANALYZE), или сделает позже. И, по совокупности вышеописанного, может стать намного хуже, чем если бы всё это не делалось вообще.

Yaroslav Schekin
> блин вот че все с этим вакуумом. Потому что aut...

ну... я админил 15 магазинов с ПГ. и вот эта мышиная возня с отдельными вакуумами и переиндексациями.... а когда выгрузил загрузил - сразу убиваешь трех зайцев- и базу обслужил и копию базы сделал

AtariSTEr2nd .
ну... я админил 15 магазинов с ПГ. и вот эта мышин...

> и вот эта мышиная возня с отдельными вакуумами и переиндексациями.... Это Вы про ту возню, которая почти всегда бесполезна и даже вредна? В общем, для этого есть autovacuum, и тащить в PostgreSQL привычные для для каких-то других СУБД "пляски с бубном" не нужно, я считаю. ;) > а когда выгрузил загрузил - сразу убиваешь трех зайцев- и базу обслужил и копию базы сделал Ага, "обслужил", а как же. Это вполне может быть вариант: оказал медвежью услугу, но "железо" (к счастью) вытянуло. ;( В общем, подобным в PostgreSQL без конкретных причин заниматься не нужно, как и советовать такое другим, вот в чём мой посыл.

Yaroslav Schekin
> и вот эта мышиная возня с отдельными вакуумами и...

не буду спорить но я делал изначально как правильно- все по отдельности. но на практике все свелось к тому как написал

AtariSTEr2nd .
не буду спорить но я делал изначально как правильн...

Ну а я буду. Это не правильно — это типичные сисадминские "ритуальные пляски" / имитация бурной деятельности, и больше ничего. :(

Yaroslav Schekin
Ну а я буду. Это не правильно — это типичные сисад...

какие пляски? все делается шедулером в автоматическом режиме.

AtariSTEr2nd .
какие пляски? все делается шедулером в автоматичес...

Такие. Вот то, что им делается (я повторю ещё раз) — как минимум не нужно, и в худшем случае вредно.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта