java - 如何从 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 中进行选择,但没有运气。
到目前为止,评论没有回答我的问题,这可能吗?
解决方案
推荐阅读
- docker - Docker 中的 MQClient
- go - Golang OpenGL 构建约束
- c++ - 在文件中查找和编辑字符串
- php - 无法在挂载 livewire 组件上调用变量
- javascript - 向 mongodb 领域发送数据会出现 400 错误
- python - 计算没有数字 9 的数字时出现意外的无限循环
- google-analytics - 页面事件是否增加了 PageViews 的价值?
- math - 你如何在数学上从一个点找到一个圆中的外部点?
- graphql - Strapi:GraphQL ctx.state 未定义
- c# - System.IndexOutOfRangeException 和带有接口或基类的 SqlQuery 方法