Що це означає, коли процес PostgreSQL “не працює в транзакції”?


84

Що це означає, коли процес PostgreSQL "простоює в транзакції"?

На сервері, який я розглядаю, на виході "ps ax | grep postgres" я бачу 9 процесів PostgreSQL, які виглядають так:

postgres: user db 127.0.0.1(55658) idle in transaction

Чи означає це, що деякі процеси зависають, чекаючи здійснення транзакції? Будемо вдячні за будь-які вказівки на відповідну документацію.

Відповіді:


54

Посібник PostgreSQL вказує, що це означає, що транзакція є відкритою (всередині BEGIN) та простою. Швидше за все це користувач, підключений за допомогою монітора, який думає або друкує. У мене в системі теж багато таких.

Якщо ви використовуєте Слон для реплікації, однак, Slony-I FAQ передбачає idle in transactionможе означати , що підключення до мережі було припинено раптово. Щоб дізнатися більше, перегляньте обговорення в цьому FAQ.


9
Що означає лише "бездіяльність" ?? Чи транзакції в стані очікування також відкриті?
Юсуф Султан

2
Що означає монітор ?
Абдулл

2
@Abdull Клієнт psql. "Монітор" - це (мабуть) архаїчний термін для програмного забезпечення, що використовується для управління базою даних.
Anonymoose


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.