TGViewer
Антон Дорошкевич | маяк в мире 1С и СУБД Антон Дорошкевич | маяк в мире 1С и СУБД @explorer1c · 2.02K subscribers
Post #51 2.08K
🔤🔤🔤 Когда фоновый процесс обновления статистики может стать виновником блокировок и что с этим можно сделать?

Не смотря на то что в целом Автовакуум это неблокирующая операция, всё таки есть возможность получить таймаут на блокировке...

Тонкость состоит в том что автовакуум, даже когда он пришёл только лишь обновить статистику накладывает блокировку на схему БД.

Т.е. нельзя во время работы автовакуума с таблицей менять в ней состав колонок или удалять таблицу целиком.

И тут нам в мире 1С очень "повезло" так как это же операции реструктуризации как версии 1 так и версии 2.

В итоге мы при реструктуризации можем получить очень неприятную ситуацию:
1. Автовакуум (автообновление статистики) на таблице занимает более 20 сек
2. Реструктуризация как раз касается этой самой таблицы
3. Через 20 сек после попытки начала реструктуризации этой таблицы получаем ошибку таймаута блокировки и реструктуризация прерывается.

Что делать?

Если у вас планируется реструктуризация большой таблицы. а обновление статистики более 20 сек может быть только на очень приличной по объёму и количеству строк таблицы, то есть 2 варианта:

1. Отключить на время реструктуризации автовакуум на сервере:
ALTER SYSTEM SET autovacuum = off;
select pg_reload_conf();


после реструктуризации включить обратно:
ALTER SYSTEM SET autovacuum = on;
select pg_reload_conf();


либо, если по умолчанию автовакуум включен был, то
ALTER SYSTEM RESET autovacuum;
select pg_reload_conf();


2. Отключить автовакуум на конкретной таблице (_inforg38) на время реструктуризации
ALTER TABLE IF EXISTS public._inforg38 SET ( autovacuum_enabled = false);
select pg_reload_conf();


после реструктуризации включить обратно:
ALTER TABLE IF EXISTS public._inforg38 SET ( autovacuum_enabled = true);
select pg_reload_conf();


Хочется назвать это костылём, но большие таблицы/базы не живут без таких оптимизаций 😄

Ну и не лишним будет напомнить, что канал есть в MAX
MAX Антон Дорошкевич | маяк в мире 1С и СУБД Только интересные технические подробности, кейсы, тесты, а также анонсы выступлений на мероприятиях Никакой "воды" и рекламы Вся информация в этом канале - эт…
  • 🔥 30
  • 👍 9
  • ❤ 2
More from @explorer1c
  1. Sep 21, 2026Можно ли сделать поведение PostgreSQL в отношении потребления памяти процессами более жест…
  2. Sep 11, 2026Сегодня ровно год первому сообщению в канале! Огромное спасибо всем вам! Честно - было оче…
  3. Sep 9, 2026Теперь на багборде можно легко и быстро сравнить версии платформы по изменениям! Уверен чт…
  4. Sep 7, 2026Начнём...)
  5. Sep 2, 2026Как собрать для анализа запроса все временные таблицы с их содержимым? Все мы хорошо знаем…
  6. Aug 26, 2026Небольшой анонс поездок и мероприятий с моим участием: 08-10/09 - Обучение по кластеру 1с…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →