#java #postgresql #hibernate #database-schema
#java #postgresql #спящий режим #база данных-схема
Вопрос:
предположим, вы выполняете запрос в таблице pg_stat_activity и получаете пример результата:
datid | datname | pid | использует sysid | usename | имя_приложения | client_addr | client_hostname | client_port | backend_start | xact_start | query_start | state_change | wait_event_type | wait_event | state | backend_xid | backend_xmin | query | backend_type |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
7198 | 10 | rdsadmin | |||||||||||||||||
7195 | |||||||||||||||||||
16384 | rdsadmin | 32375 | 10 | rdsadmin | Драйвер PostgreSQL JDBC | ||||||||||||||
16409 | c-t-s | 21143 | 16410 | c-t-s | c-t-s | 10.10.3.1 | 48037 | 2021-01-18 13:19:03 | 2021-01-18 13:31:23 | 2021-01-18 13:31:23 | Client | ClientRead | idle | COMMIT | client backend |
Я хотел бы знать, по какой схеме COMMIT
был выполнен запрос?
В моем случае у меня многопользовательская работа на основе схемы, и я хотел бы различать схемы (арендаторы). Мы всегда делаем запросы с одной схемой, поэтому мы их не смешиваем. Для достижения этого мы устанавливаем search_path
при каждом getConnection
вызове метода. Код разработан на Java, и мы не используем имена схем в запросах, так как он всегда динамический — берется из текущего контекста запроса и устанавливается в getConnection
методе.
С текущим результатом я не знаю, какой клиент (схема) вызывает медленные / длинные запросы.
Я пытался выбрать из pg_class по идентификаторам, взятым из pg_stat_activity, но безуспешно.
Пока комментарии не ответили на мою проблему, возможно ли это вообще?
Комментарии:
1. Запросы выполняются для всей базы данных. В одном запросе можно использовать несколько схем.
2. Я спрашиваю о том, как исследовать, на какую СХЕМУ влияет запрос. Информация отсутствует в pg_stat_activity.
3.
select * from pg_catalog.pg_class as c join information_schema.tables as t on (c.relname = t.table_name);
На какую схему влияет этот запрос?4. Я не уверен, достаточно ли этого. Он выбирает * about pg_class и присоединяется к таблицам. Но до сих пор эта информация не связана с pg_stat_activity. Можем ли мы присоединиться к этому дополнительно с помощью select * из pg_stat_activity; по PID или чему-то еще?
5. В этом примере запроса я пытаюсь показать, что один qoury может использовать несколько схем. Таким образом, правильным вопросом должно быть «Как получить схемы postgres из запроса runinng» 🙂 В представлении нет отдельной информации об используемых схемах.
pg_stat_activity
В столбце можно найти текст выполняемых в настоящее время запросовquery
(примечание: «По умолчанию текст запроса усекается на 1024 байта» )