pg_stat_activity中的查询是否被截断?

时间:2009-07-16 03:33:21

标签: postgresql

我正在使用SELECT current_query FROM pg_stat_activity;查看当前正在执行的查询,但我注意到查询被截断了。是否有任何变通方法或任何其他方式来查看当前正在执行的查询?

7 个答案:

答案 0 :(得分:25)

PostgreSQL 8.4添加参数“track_activity_query_size”。该值仍然会被截断,但您可以控制它的长度。

答案 1 :(得分:10)

ALTER SYSTEM SET track_activity_query_size = 16384;

您仍需要重新启动服务才能生效

答案 2 :(得分:6)

极端情况下的替代方法是使用gdb调试器附加到进程并打印出查询。

请参阅http://darthanthony.wordpress.com/2012/10/11/viewing-running-postgres-queries-and-what-if-they-are-too-long/

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;