我正在使用SELECT current_query FROM pg_stat_activity;查看当前正在执行的查询,但我注意到该查询被截断.是否有任何解决方法或任何其他方式来查看当前正在执行的查询?
gre*_*egn 14
ALTER SYSTEM SET track_activity_query_size = 16384;
Run Code Online (Sandbox Code Playgroud)
您仍然需要重新启动服务才能生效
在极端情况下,另一种方法是使用gdb调试器附加到进程并打印出查询.
gdb [path_to_postgres] [pid]
printf "%s\n", debug_query_string
Run Code Online (Sandbox Code Playgroud)
从 PostgreSQL 13 开始,最大值track_activity_query_size 增加到 1MB。
默认值为track_activity_query_size1024 字节(从 PostgreSQL 13-16 开始)。
请注意,如果查询大于track_activity_query_size,它将被截断。
如果您使用 docker,您可以像这样配置 docker-compose 文件:
# ...
services:
postgres:
container_name: postgres
image: postgis/postgis:13-3.1
command:
- "postgres"
- "-c"
- "track_activity_query_size=1048576"
# ...
Run Code Online (Sandbox Code Playgroud)
您可以这样设置/var/lib/postgresql/data/postgresql.conf:
track_activity_query_size=1048576
Run Code Online (Sandbox Code Playgroud)
如果在该路径中找不到该.conf文件,您可以使用以下 SQL 语句确定它的位置:
# ...
services:
postgres:
container_name: postgres
image: postgis/postgis:13-3.1
command:
- "postgres"
- "-c"
- "track_activity_query_size=1048576"
# ...
Run Code Online (Sandbox Code Playgroud)
请务必重新启动数据库以应用设置。您可以使用此查询来检查它是否已应用:
SHOW track_activity_query_size;
Run Code Online (Sandbox Code Playgroud)
如果设置更新为您想要的大小,您现在可以在pg_stat_activity表格上看到此设置的效果:
SELECT current_query FROM pg_stat_activity;
Run Code Online (Sandbox Code Playgroud)
小智 1
您可以在 postgresql 中启用语句日志记录(log_statement),然后检查日志。
| 归档时间: |
|
| 查看次数: |
24196 次 |
| 最近记录: |