dbacvetkov / PASH-Viewer

PostgreSQL ASH Viewer (PASH Viewer) provides graphical view of active session history data within the PostgreSQL database
GNU General Public License v3.0
120 stars 18 forks source link

with + select - unknown type !? #1

Closed sgrinko closed 6 years ago

sgrinko commented 6 years ago

Использую версию 0.3.2 Версия сервера 10.4 default и сам запрос default соответственно нет попыток распознать план! Да и время работы запроса очень странное, сам запрос работает миллисекунды.

sgrinko commented 6 years ago

со временем работы запроса разобрался :) это был простой в транзакции... было бы очень хорошо добавить контроль состояния idle in transaction, тогда было бы сразу понятно, что именно происходит.

dbacvetkov commented 6 years ago

Добавил поддержку WITH в релизе 0.3.3 - пробуйте. Ситуацию с idle in transaction попытался смоделировать - пока у меня не получилось, чтобы это отражалось на длительности запроса. Опишите сценарий чуть подробней.

sgrinko commented 6 years ago

спасибо, попробую новую версию... попробую смоделировать...напишу...

sgrinko commented 6 years ago

Ситуацию с idle in transaction попытался смоделировать - но такая сессия не попадает сейчас в мониторинг. А очень бы хотелось видеть :) Что думаете насчет интерпретации статуса соединения 'idle in transaction' как отдельного статуса ожидания на графике?

dbacvetkov commented 6 years ago

Если я правильно понимаю, сессия в статусе idle in transaction не является активной - т.е. она ничего не делает, не потребляет ресурсы сервера (CPU, IO). Она просто ждёт следующей команды от пользователя/приложения. Oracle ASH тоже не показывает такие сессии. Зачем их видеть в списке активных сессий?

sgrinko commented 6 years ago

сессия в статусе idle in transaction - держит блокировки открытые в ней. Поэтому она мешает работе vacuum и работе других сессий, что может приводить к bloat в таблицах и timeout в других клиентских запросах. Поэтому такие сессии следует тщательно мониторить и разбираться с причинами приводящими к их возникновению. Также это впустую расходование такого ценного ресурса как connect к серверу (для pooling очень важно)

sgrinko commented 6 years ago

@dbacvetkov так как насчет выделения статуса idle in transaction в отдельный контролируемый цветовой пунктик :) ?

dbacvetkov commented 6 years ago

Это достаточно трудоёмко. Может быть если программа станет популярной и появятся ещё желающие добавления такой фичи - у меня появится мотивация)

sgrinko commented 6 years ago

если программу не развивать - новых пользователей не появится. а могут уйти и те кто пришел в надежде на развитие. можете написать (кратко) в чем сложность?

dbacvetkov commented 6 years ago

Закрываю Issue "with + select - unknown type", т.к. задача решена. "idle in transaction" - отдельная тема и вряд ли будет реализовываться, т.к. противоречит принципу активных сессий.

sgrinko commented 6 years ago

@dbacvetkov по поводу закрытия конкретно данной issue согласен - решено. Но не могу согласиться с вашим высказыванием:

"idle in transaction" - отдельная тема и вряд ли будет реализовываться, т.к. противоречит принципу активных сессий.

ведь инструмент призван помочь в решении проблем с работой сервера...ограничивать его только видением активных сессий все равно, что смотреть на мир с завязанным одним глазом. Oracle и Postgres используют разные движки у которых есть свои особенности...не видеть их в упор на мой взгляд очень странно :( Алгоритм контроля, который хорош в Oracle - не всегда также хорош в Postgres