我们的生产 postgresql (13.8) 数据库中有一些相当大的查询,超过了默认的 1024 track_activity_query_size
(有些查询超过 100k)。我已将此值提高到 8192,但它仍然无法捕获我们的大部分查询。
我在想:
- 我可以合理地将其设置为多高(我读过最大为 1MB),而不会产生性能问题?
- 如果我将其设置得太高,我可以监控哪些指标来跟踪?
我想将其设置为 256k 或可能更高,但这似乎可能过多。
我们的生产 postgresql (13.8) 数据库中有一些相当大的查询,超过了默认的 1024 track_activity_query_size
(有些查询超过 100k)。我已将此值提高到 8192,但它仍然无法捕获我们的大部分查询。
我在想:
我想将其设置为 256k 或可能更高,但这似乎可能过多。
对于性能问题很难给出权威的答案;只有基准可以做到这一点。我的回答是基于我对代码的理解。
增加的唯一影响
track_activity_query_size
是在服务器启动时在进程数组中分配更多内存。进程数组的大小是max_connections
+autovacuum_max_workers
+ 1 +max_worker_processes
+max_wal_senders
+max_prepared_xacts
,因此您必须乘以track_activity_query_size
该数字才能看到将分配多少内存。唯一的性能影响是可用于缓存数据和处理查询的内存较少。