postgresql pg_stat_activity中的查询是否被截断?

olhwl3o2  于 2023-02-04  发布在  PostgreSQL
关注(0)|答案(7)|浏览(217)

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

cyvaqqii

cyvaqqii1#

ALTER SYSTEM SET track_activity_query_size = 16384;

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

nxowjjhe

nxowjjhe2#

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

ccrfmcuu

ccrfmcuu3#

极端情况下的一种替代方法是使用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
o2gm4chl

o2gm4chl4#

从PostgreSQL 13开始的最大值为track_activity_query_sizeis 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,则可以将设置设置为/var/lib/postgresql/data/postgresql.conf。请确保重新启动数据库以应用该设置。可以使用以下查询来检查是否应用了该设置:

SHOW track_activity_query_size;
crcmnpdw

crcmnpdw5#

使用以下命令获取postgres.conf文件路径

psql -U postgres -c 'SHOW config_file'

或者您使用的是root用户,则只需

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,您可以增加您想要的大小。

mftmpeh8

mftmpeh86#

你可以只在postgresql(log_statement)中启用语句日志记录,然后检查日志。

1qczuiv0

1qczuiv07#

如果您运行Google Cloud SQL示例,您可以在Edit Instance --> Flags部分配置track_activity_query_size
我个人将其设置为32786

相关问题