Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 512новых вакансий за сутки·54 396вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 565
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 395 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python8 752
  • Облачные технологии6 631
  • QA вакансии2 183
  • Android1 322
  • Инженер данных860
  • Продакт-менеджер316

Разработка

  • iOS1 238
  • Backend вакансии1 196
  • AI вакансии549
  • Fullstack вакансии500
  • Frontend вакансии426
  • Mobile вакансии28

По стеку

  • Go5 209
  • Java3 131
  • Kotlin1 113
  • Node.js1 008
  • Rust833
  • .NET656
  • PHP322
  • C++270
  • C#207

DevOps и инфраструктура

  • Kubernetes3 882
  • Linux-инфраструктура2 817
  • DevOps вакансии2 655
  • Terraform / IaC2 191
  • Мониторинг и Observability1 071
  • CI/CD919
  • SRE308
  • Кибербезопасность38

Аналитика и данные

  • Аналитик данных522
  • Data Scientist435
  • Бизнес-аналитик397
  • Системный аналитик67

Другие направления

  • Проджект-менеджер109
  • UI/UX дизайн67
  • Ручное тестирование14

По регионам

  • Вакансии в США25 642
  • Вакансии в Европе10 259
  • Работа в России3 639
  • Вакансии в Канаде2 255

По формату

  • Удалённые вакансии42 339
  • Релокация в США25 642
  • Гибридная работа5 706
  • Офисная работа4 402

По уровню

  • Senior вакансии22 510
  • Middle вакансии11 429
  • Junior вакансии3 877

Сейчас нанимают

Все компании
  • Wise192 вакансии
  • Rakuten189 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis42 вакансии
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме PostgreSQLВсе вопросы
PostgreSQLMiddleТеория

Что такое vacuum в PostgreSQL и зачем он нужен?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

VACUUM в PostgreSQL убирает «мёртвые» кортежи, оставшиеся от MVCC, освобождает место для повторного использования и предотвращает Transaction ID Wraparound. Autovacuum запускается автоматически при превышении порога dead tuples (по умолчанию 20% строк).

Типы VACUUM

-- Стандартный VACUUM: помечает мёртвые кортежи как доступные для повторного использования
-- НЕ возвращает место ОС, НЕ блокирует таблицу на чтение/запись
VACUUM users;

-- VACUUM ANALYZE: убирает мёртвые кортежи + обновляет статистику планировщика
VACUUM ANALYZE users;

-- VACUUM FULL: дефрагментирует таблицу и возвращает место ОС
-- БЛОКИРУЕТ таблицу на всё время (аналог REWRITE TABLE)
-- Используйте только при критичном bloat и возможности простоя
VACUUM FULL users;

-- VACUUM VERBOSE: подробный вывод о проделанной работе
VACUUM (VERBOSE, ANALYZE) users;

-- VACUUM FREEZE: заморозить транзакционные ID (предотвратить wraparound)
VACUUM FREEZE users;

Что такое VACUUM

PostgreSQL использует MVCC (Multi-Version Concurrency Control) для изоляции транзакций: вместо изменения строки на месте создаётся новая версия, а старая помечается как «мёртвая» (dead tuple). VACUUM убирает мёртвые кортежи и освобождает место для повторного использования. Без регулярного VACUUM таблицы раздуваются (bloat), а при переполнении счётчика транзакций грозит Transaction ID Wraparound.

Autovacuum

Autovacuum — фоновый процесс, запускающий VACUUM автоматически при достижении порога мёртвых кортежей. Настраивается глобально в postgresql.conf и per-table.

-- Глобальные настройки autovacuum
-- postgresql.conf:
-- autovacuum = on
-- autovacuum_vacuum_scale_factor = 0.2    # 20% мёртвых кортежей = триггер
-- autovacuum_analyze_scale_factor = 0.1   # 10% = триггер для ANALYZE
-- autovacuum_vacuum_threshold = 50        # минимум 50 строк

-- Per-table настройки для высоконагруженных таблиц
ALTER TABLE events SET (
    autovacuum_vacuum_scale_factor = 0.01,   -- 1% (не 20%)
    autovacuum_vacuum_threshold = 100,
    autovacuum_analyze_scale_factor = 0.005
);

-- Проверить текущие настройки таблицы
SELECT relname, reloptions
FROM pg_class
WHERE relname = 'events';

Мониторинг VACUUM

-- Состояние таблиц: мёртвые кортежи, последний VACUUM
SELECT
    schemaname,
    relname,
    n_dead_tup,
    n_live_tup,
    ROUND(100.0 * n_dead_tup / NULLIF(n_live_tup + n_dead_tup, 0), 2) AS dead_pct,
    last_vacuum,
    last_autovacuum,
    last_analyze
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC
LIMIT 20;

-- Таблицы с риском Transaction ID Wraparound
SELECT
    relname,
    age(relfrozenxid) AS xid_age,
    2147483647 - age(relfrozenxid) AS xids_left
FROM pg_class
WHERE relkind = 'r'
ORDER BY age(relfrozenxid) DESC
LIMIT 10;
-- Если xid_age > 2 млрд — PostgreSQL уйдёт в аварийный режим!

Transaction ID Wraparound

PostgreSQL использует 32-битный счётчик транзакций. При переполнении (wraparound) все данные стали бы «из будущего» и невидимы. Для предотвращения: autovacuum FREEZE замораживает старые строки. Признак близкого wraparound: age(relfrozenxid) > 1.5 млрд.

-- Принудительная заморозка при высоком age
VACUUM FREEZE ANALYZE critical_table;

-- В postgresql.conf: агрессивная заморозка начинается при
-- autovacuum_freeze_max_age = 200000000 (200 млн)

Подводные камни

  • VACUUM FULL — это REWRITE TABLE с эксклюзивной блокировкой. Для production без downtime используйте pg_repack или pg_squeeze.
  • Долгая транзакция (idle in transaction) блокирует autovacuum от удаления мёртвых кортежей — всегда мониторьте pg_stat_activity WHERE state = 'idle in transaction'.
  • Autovacuum по умолчанию ограничен в ресурсах (autovacuum_vacuum_cost_delay) и может не справляться с высоконагруженными таблицами — увеличьте autovacuum_max_workers и уменьшите cost delay.
  • Repacked таблица требует свободного места размером с текущую таблицу — следите за дисковым пространством перед VACUUM FULL или pg_repack.
  • Статистика планировщика не обновляется без ANALYZE — VACUUM без ANALYZE не помогает производительности запросов.
  • Transaction ID Wraparound может случиться даже при включённом autovacuum, если на таблице есть репликационный слот без активного standby или долгая транзакция.
  • VACUUM не работает с foreign tables и некоторыми типами партиционированных таблиц без явного указания секции.

Частые вопросы на собеседовании

  • Что делает VACUUM, VACUUM FULL, ANALYZE? Чем они отличаются и какой когда применять?
  • Какие уровни изоляции есть и чем отличаются (READ COMMITTED, REPEATABLE READ, SERIALIZABLE)? Какой по умолчанию в Postgres?
  • Что такое PITR и чем pg_dump отличается от base backup + WAL archive?
  • Каковы типы индексов в PostgreSQL (B-tree, Hash, GIN, GiST, BRIN)?

Типичные ошибки

  • Отвечать про vacuum как про абстрактный SQL без учета MVCC, WAL, planner или конкретной версии PostgreSQL.
  • Переносить поведение MySQL или ClickHouse на PostgreSQL без проверки документации.
  • Не связывать механизм с последствиями для индексов, транзакций, блокировок или эксплуатации.
  • Показывать синтаксис, который не поддерживается PostgreSQL.

Что проверяет интервьюер

  • Кандидат объясняет vacuum через реальный механизм PostgreSQL, а не общими словами.
  • Приводит корректный SQL или диагностический запрос для этой СУБД.
  • Называет ограничения, версионные отличия или эксплуатационные последствия.
  • Связывает ответ с проектированием приложения, производительностью, надежностью или безопасностью.

Как вы знаете этот вопрос?

Проверить себя по теме PostgreSQL →

Источники

  • https://www.postgresql.org/docs/current/routine-vacuuming.html
←Предыдущий вопросЧто такое политики безопасности на уровне строк (row-level security, RLS) в PostgreSQL?Следующий вопрос→Что такое WAL и зачем он нужен? Что произойдёт при крэше БД без WAL?

Связанные темы

PostgreSQLdatabase-maintenanceperformance-tuning

Вакансии с этим навыком

PostgreSQL вакансии
  • Fullstack-разработчик (Node.js/React)
  • QA Fullstack (C#)
  • ClickHouse Database Administrator
  • Lead Cloud Engineer (Azure) — Interview Experts Needed (#5499)
  • Senior DataOps Engineer (#5858)