Отримання декількох запитів із "покажіть рівень ізоляції транзакцій" у pg_activity


10

Я використовую PostgreSQL-сервер для мого виробничого використання.

Коли я запускаю запит, як

select * from pg_stat_activity

на моєму сервері я отримую 98% запитів на кшталт

SHOW TRANSACTION ISOLATION LEVEL

і мій сервер приймає лише 100 підключень, тому я не в змозі продовжувати роботу.

Чому це відбувається? Як я можу заблокувати всі ці запити?


4
Postgres не створює з'єднання самостійно. Саме ваша програма створює ці з'єднання та виконує ці запити. Можливо пул підключення або щось подібне.
a_horse_with_no_name

2
Запускаєте програму Java? Використовуєте HikariCP або, можливо, інший варіант об'єднання з'єднань? Я використовую HikariCP і бачу подібну річ, коли я входжу в систему psqlі роблю select query from pg_stat_activity;... Мені також було цікаво, чому це відбувається; я здогадуюсь, що це механізм, завдяки якому HikariCP підтримує зв’язки "свіжими".
Кріс В.

Відповіді:


2

Якщо вони там; вони там, але вони не чарівно вискочили з повітря. Хоча я хотів би, щоб ти повернувся і сказав нам, що вони були у вашому випадку, як правило, це одна з двох речей,

  1. Об'єднання з'єднань
  2. Абстракція ORM або SQL

Іноді ці хлопці підключаються і починають порожні транзакції або готують транзакцію. Це завжди результат поганої бібліотеки. Це виправдано, якщо бібліотека є новою або новою у базі даних. Якщо бібліотеці вже багато років, і я роблю це, я б підозрював, що вони не мають занадто багато очей на це і шукають альтернативи.

З коментарів,

Postgres не створює з'єднання самостійно. Саме ваша програма створює ці з'єднання та виконує ці запити. Можливо пул підключення або щось подібне. - a_horse_with_no_name 10 вересня 1313 о 9:03

Запускаєте програму Java? Використовуєте HikariCP або, можливо, інший варіант об'єднання з'єднань? Я використовую HikariCP і бачу подібну річ, коли я входжу в psql і вибираю запит з pg_stat_activity; ... Мені також було цікаво, чому це відбувається; я здогадуюсь, що це механізм, завдяки якому HikariCP підтримує зв’язки "свіжими". - Кріс В. 16 січня 1616 о 19:22

Незважаючи на те, що це спроба зберегти з'єднання «свіжим», кошерний спосіб це зробити - це щось подібне

result = PQexec(imp_dbh->conn, "/* DBD::Pg ping test v3.6.0 */");

Ви можете подати звіт про помилку, щоб скористатися цим методом.

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