Postgresql pg_stat_活动中的查询是否被截断?
我正在使用Postgresql pg_stat_活动中的查询是否被截断?,postgresql,Postgresql,我正在使用从pg_stat_活动中选择当前_查询查看当前执行的查询,但我注意到查询被截断。是否有任何解决方法或任何其他方式来查看当前执行的查询?您可以在postgresql中启用语句日志记录(log\u语句),然后检查日志。postgresql 8.4添加了参数“跟踪活动\u查询大小””。该值仍将被截断,但您可以控制其长度。极端情况下的另一种选择是使用gdb调试器附加到进程并打印查询 看 如果运行Google Cloud SQL实例,您仍然需要重新启动该服务才能生效,您可以在编辑实例-->标志部
从pg_stat_活动中选择当前_查询
查看当前执行的查询,但我注意到查询被截断。是否有任何解决方法或任何其他方式来查看当前执行的查询?您可以在postgresql中启用语句日志记录(log\u语句),然后检查日志。postgresql 8.4添加了参数“跟踪活动\u查询大小”
”。该值仍将被截断,但您可以控制其长度。极端情况下的另一种选择是使用gdb调试器附加到进程并打印查询
看
如果运行Google Cloud SQL实例,您仍然需要重新启动该服务才能生效,您可以在
编辑实例-->标志部分中配置跟踪活动\u查询\u大小
我个人将其设置为32786
从PostgreSQL 13开始,track\u activity\u query\u size
的最大值
如果使用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;
不是真的,如果SQL语句是一个永久运行的语句呢?(僵尸postgres进程)然后,由于它从未完成,您只能通过从pg_stat_活动中查询SELECT current_查询来查看它的运行时;在Postgres 9.5中取消了1KB的限制。如果升级数据库,可以将其删除。默认值为1kB。使用show track\u activity\u query\u size
检查设置。应该显示16kB。我喜欢这种方法,但不幸的是,我得到的“debug\u query\u string”的类型未知;将其强制转换为声明的类型
# ...
services:
postgres:
container_name: postgres
image: postgis/postgis:13-3.1
command:
- "postgres"
- "-c"
- "track_activity_query_size=1048576"
# ...
SHOW track_activity_query_size;