我正在使用SELECT current_query FROM pg_stat_activity;
查看当前正在执行的查询,但我注意到查询被截断了。是否有任何变通方法或任何其他方式来查看当前正在执行的查询?
答案 0 :(得分:25)
PostgreSQL 8.4添加参数“track_activity_query_size
”。该值仍然会被截断,但您可以控制它的长度。
答案 1 :(得分:10)
ALTER SYSTEM SET track_activity_query_size = 16384;
您仍需要重新启动服务才能生效
答案 2 :(得分:6)
极端情况下的替代方法是使用gdb调试器附加到进程并打印出查询。
gdb [path_to_postgres] [pid]
printf "%s\n", debug_query_string
答案 3 :(得分:2)
你可以在postgresql(log_statement)中启用语句记录,并检查日志。
答案 4 :(得分:1)
我似乎无法找到一个简单的解决方案,但2002年的这篇文章表明你需要调整设置并重新编译:http://osdir.com/ml/db.postgresql.sql/2002-05/msg00088.html
答案 5 :(得分:1)
如果您运行Google Cloud SQL实例,则可以在track_activity_query_size
部分中配置Edit Instance --> Flags
。
我个人将其设置为32786
。
答案 6 :(得分:0)
从 PostgreSQL 13 开始,track_activity_query_size
is increased to 1MB 的最大值。
如果你使用 docker,你可以像这样配置你的 docker-compose 文件:
# ...
services:
postgres:
container_name: postgres
image: postgis/postgis:13-3.1
command:
- "postgres"
- "-c"
- "track_activity_query_size=1048576"
# ...
如果您不使用 docker,您可以将 the setting 设置为 /var/lib/postgresql/data/postgresql.conf
。请务必重新启动数据库以应用设置。您可以使用此查询来检查是否已应用:
SHOW track_activity_query_size;