Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Грибные блоки - красочная головоломка, в которой вам предстоит передвигать блоки и заполнять ряды, чтобы собирать грибочки в корзину! Попробуйте продержаться как можно дольше!

Грибные блоки

Головоломки, Расслабляющая, Пазлы

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Postgresql + Полезное

С этим тегом используют

Субд Производительность Мониторинг Тестирование Программирование Нейронные сети IT Вертикальное видео Короткие видео Ремонт Инструменты Строительство Удобство Технологии Все
1 пост сначала свежее
7
kznalp
kznalp
2 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

Заметка на память - как не надо завершать процесс в PostgreSQL⁠⁠

Иногда случается ситуация : нужно завершить долгий SQL запрос (кильнуть сессию).

Заметка на память - как не надо завершать процесс в PostgreSQL Субд, Postgresql, Полезное, Опыт, Личный опыт, Длиннопост

Стандартный способ, рекомендованный в документации :
select pg_terminate_backend( pid );


Однако, иногда, если запрос очень долгий , даже после прерывания процесса, pid всё равно еще остается в результате запроса select ... from pg_stat_activity ;


И в этой ситуации может возникнуть соблазн "kill -9 pid"
Чтобы побыстрее ...

Заметка на память - как не надо завершать процесс в PostgreSQL Субд, Postgresql, Полезное, Опыт, Личный опыт, Длиннопост

После выполнения kill , кластер PostgreSQL аварийно перезапустится , со всеми вытекающими последствиями .
Быстрее - не получится .

Нужно просто подождать завершения отката изменений, выполненных в ходе транзакции начатой pid .

Заметка на память - как не надо завершать процесс в PostgreSQL Субд, Postgresql, Полезное, Опыт, Личный опыт, Длиннопост

P.S. Ну и как обычно , мнение ИИ. Страшилка о 'kill -9" от DeepSeek:

После выполнения команды `kill -9` для процесса PostgreSQL, выполняющего долгий запрос, возникают следующие последствия:

### 1. **Прерывание транзакции**
- Транзакция, связанная с убитым процессом, **не будет завершена корректно**. Поскольку `SIGKILL` (сигнал 9) нельзя перехватить или обработать, PostgreSQL не успевает выполнить откат (`ROLLBACK`) транзакции. Это может привести к:
- **Незавершенным изменениям данных**: Если транзакция выполняла модификацию данных (INSERT/UPDATE/DELETE), изменения останутся в состоянии "под вопросом" до восстановления.
- **Блокировкам (locks)**: Ресурсы (строки, таблицы), заблокированные транзакцией, могут остаться занятыми до очистки процесса.

### 2. **Автоматическое восстановление PostgreSQL**
- PostgreSQL обнаруживает аварийное завершение процесса и автоматически выполняет:
- **Очистку блокировок**: Все удерживаемые процессом блокировки освобождаются.
- **Откат транзакции**: Незавершенная транзакция откатывается с помощью механизма восстановления на основе **WAL (Write-Ahead Logging)**. Это гарантирует целостность данных, но может занять время, особенно если транзакция была крупной.

### 3. **Влияние на производительность**
- **Долгое восстановление**: Если убитый процесс работал с большим объемом данных, откат транзакции через WAL может задержать другие операции.
- **Возможные задержки**: Другие сессии, ожидавшие блокировок от убитого процесса, получат доступ к ресурсам только после завершения восстановления.

### 4. **Ошибки в клиентских приложениях**
- Клиент, инициировавший запрос, получит ошибку соединения (например, `connection terminated unexpectedly`). Приложение должно быть готово к таким сценариям (повторные попытки, обработка исключений).

### 5. **Риск для репликации (если используется)**
- В режимах синхронной репликации аварийное завершение процесса может временно нарушить синхронизацию данных между primary и standby-серверами. Однако механизм WAL гарантирует восстановление согласованности.

### 6. **Журналирование (логи)**
- В логах PostgreSQL появится запись об аварийном завершении процесса, например:
```
FATAL: terminating connection due to administrator command
LOG: server process (PID 12345) was terminated by signal 9: Killed
LOG: aborting any active transactions
```

---

### Рекомендации:
1. **Избегайте `kill -9`**, если это возможно. Используйте `pg_cancel_backend()` или `pg_terminate_backend()` для безопасного завершения запросов.
2. Для долгих транзакций настройте `statement_timeout` или `idle_in_transaction_session_timeout`.
3. Мониторьте активные транзакции через `pg_stat_activity`.

**Итог**: `kill -9` не повредит данные благодаря WAL, но может вызвать временные задержки и требует времени на автоматическое восстановление.

Показать полностью 3
[моё] Субд Postgresql Полезное Опыт Личный опыт Длиннопост
2
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии