--- aliases: tags: - maturity/🌱 date: 2024-11-05 --- ## Тезисы - Долгая транзакция — это незавершенная транзакция, которая может удерживать старую точку восстановления и препятствовать работе Autovacuum. - Проблемы, вызванные долгими транзакциями: блокировка данных, нарушение процесса очистки таблиц, увеличение объема данных. - Причины: ошибки в приложении, не обработанные исключения, человеческий фактор. - Рекомендации: мониторинг и внешняя автоматизация завершения долгих транзакций. *** **Долгая транзакция** — это транзакция, которая была начата, но не завершена, и остается открытой, даже если в данный момент не выполняет действий. Такая транзакция удерживает точку восстановления (oldest transaction ID), что приводит к тому, что PostgreSQL должен хранить данные для поддержания целостности состояния на момент её открытия. Это удерживание мешает процессу [[postgresql/Autovacuum|Autovacuum]] очищать неактуальные строки, так как они могут быть необходимы для поддержания целостности базы в случае завершения этой старой транзакции. **Причины появления долгих транзакций** 1. **Внешний вызов**: В рамках транзакции в базе данных выполняется вызов внешнего процесса, который завершается с ошибкой, оставляя транзакцию открытой. 2. **Отсутствие обработки ошибок**: Если приложение не обрабатывает исключения, возникшие в ходе выполнения логики внутри транзакции, это может оставить транзакцию незавершенной. 3. **Человеческий фактор**: Открыли транзакции вручную через консоль и забыли её завершить. **Как решать проблему долгих транзакций?** 1. **Настройка мониторинга и алертов**: Настройте мониторинг и установите порог длительности транзакции, после которого её продолжительное существование вызывает оповещение. В большинстве продакшн-систем это время обычно составляет 1 час или меньше. 2. **Автоматическое завершение долгих транзакций**. *** ## Мета информация **Область**:: [[../../meta/zero/00 Реляционная база данных|00 Реляционная база данных]] **Родитель**:: [[Транзакция БД]] **Источник**:: **Создана**:: [[2024-11-05]] **Автор**:: ### Дополнительные материалы - ### Дочерние заметки