首页 > 解决方案 > 如何从 Java 中的运行查询中获取 postgres 模式

问题描述

假设您对 pg_stat_activity 表进行查询并获得示例结果:

数据 数据名 PID 使用sysid 使用名称 应用名称 客户端地址 客户端主机名 客户端端口 backend_start xact_start 查询开始 state_change 等待事件类型 等待事件 状态 backend_xid backend_xmin 询问 后端类型
7198 10 rdsadmin
7195
16384 rdsadmin 32375 10 rdsadmin PostgreSQL JDBC 驱动程序
16409 cts 21143 16410 cts cts 10.10.3.1 48037 2021-01-18 13:19:03 2021-01-18 13:31:23 2021-01-18 13:31:23 客户 客户端读取 闲置的 犯罪 客户端后端

我想知道查询COMMIT是在哪个模式上执行的?

我的情况是我有基于模式的多租户,我想区分模式(租户)。我们总是进行单一模式查询,所以我们不会混合它们。为了实现这一点,我们search_path在每个getConnection方法调用上进行设置。代码是用 java 开发的,我们不在查询中使用模式名称,因为它总是动态的——取自当前请求上下文并在getConnection方法中设置。

根据当前结果,我不知道哪个租户(模式)导致查询缓慢/长。

我试图通过从 pg_stat_activity 中获取的 id 从 pg_class 中进行选择,但没有运气。

到目前为止,评论没有回答我的问题,这可能吗?

标签: javapostgresqlhibernatedatabase-schema

解决方案


推荐阅读