我正在使用SELECT current_query FROM pg_stat_activity;
来查看当前正在执行的查询,但我注意到查询结果被截断了。是否有解决方法或其他方式可以查看当前正在执行的查询?
我正在使用SELECT current_query FROM pg_stat_activity;
来查看当前正在执行的查询,但我注意到查询结果被截断了。是否有解决方法或其他方式可以查看当前正在执行的查询?
ALTER SYSTEM SET track_activity_query_size = 16384;
为使更改生效,您仍需重新启动该服务。
show track_activity_query_size;
检查设置。应该显示16kB。 - Eugene KulabuhovPostgreSQL 8.4 添加了参数 "track_activity_query_size
"。该值仍会被截断,但您可以控制其长度。
在极端情况下的替代方法是使用gdb调试器连接到进程并打印出查询。
gdb [path_to_postgres] [pid]
printf "%s\n", debug_query_string
printf "%s\n",(char*)debug_query_string
。 - Andy Beverley从 PostgreSQL 13 开始,track_activity_query_size
的最大值增加到了 1MB。
如果您使用 Docker,则可以按照以下方式配置您的 docker-compose 文件:
# ...
services:
postgres:
container_name: postgres
image: postgis/postgis:13-3.1
command:
- "postgres"
- "-c"
- "track_activity_query_size=1048576"
# ...
SHOW track_activity_query_size;
postgres.conf
文件路径:psql -U postgres -c 'SHOW config_file'
SHOW config_file;
/var/lib/pgsql/data/postgresql.conf # Output of above command
然后使用vim编辑文件,将下面的参数更改为16kb。
track_activity_query_size=16384
请重新启动您的Postgres服务器。
之后,如果您运行SELECT current_query FROM pg_stat_activity;
,它将显示更多的查询结果,但会截断到16KB,您可以增加所需的大小。
track_activity_query_size
。我个人将其设置为32786
。你可以在PostgreSQL中启用语句日志记录(log_statement),然后检查日志。