PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wyświetlić listę wszystkich przygotowanych wyciągów dla wszystkich aktywnych sesji?

Nie. Przygotowane instrukcje AFAIK są lokalne dla zaplecza; inne backendy po prostu nie wiedzą, że istnieją. Musisz zmodyfikować serwer, aby dodać dodatkową komunikację między procesami, aby umożliwić jednemu backendowi zapytanie innych o przygotowane instrukcje.

Backendy początkowo wydawały się współdzielić te same pg_prepared_statements schowek na stół, jako:

SELECT relfilenode FROM pg_class WHERE  relname = 'pg_prepared_statements';

zwraca ten sam relfilenode z różnych backendów. Byłem zaskoczony, ponieważ wydawało mi się, że przygotowane zestawienia nie znajdują się na dysku. Gdyby były na dysku, myślę, że mógłbyś użyć funkcji z modułu pageinspect contrib czytać surowe krotki lub strony tabeli. Widoczność byłaby problemem; skąd możesz wiedzieć, co było powiązane z martwym/zakończonym backendem, a co było ważne?

Próbowałem tego i odkryłem, że pg_prepared_statements to właściwie widok:

regress=# SELECT * FROM heap_page_items(get_raw_page('pg_prepared_statements', 1));
ERROR:  cannot get raw page from view "pg_prepared_statements"

w szczególności widok na pg_prepared_statement() funkcjonować. Więc nie ma co sprawdzać. To wewnętrzny backend.

To wydaje się być jednym z tych „… ale dlaczego miałbyś to zrobić?” pytania, co często oznacza, że ​​ktoś pyta o rozwiązanie przewidzieli ich prawdziwy problem, zamiast pytać o ich prawdziwy problem.

Więc:Dlaczego tego chcesz? Jaki jest prawdziwy problem, który próbujesz rozwiązać?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Asynchroniczny DBAppender z logbackiem

  2. Utwórz rolę PostgreSQL 9 z loginem (użytkownikiem) tylko po to, aby wykonywać funkcje

  3. Indeks PostgreSQL w JSON

  4. Jak zmodyfikować pojedynczą wartość właściwości w typie danych PostgreSQL JSONB?

  5. Jak ustawić wartość limitu czasu połączenia dla pgAdmin?