Temos algumas consultas bastante grandes em nosso banco de dados postgresql (13.8) de produção que excedem o padrão 1024 para track_activity_query_size
(algumas consultas têm mais de 100k). Aumentei esse valor para 8192, mas ele ainda não captura algumas de nossas consultas.
Estou me perguntando:
- Quão alto posso definir isso razoavelmente (li que 1 MB é o máximo) sem incorrer em problemas de desempenho?
- Quais métricas posso monitorar para rastrear se eu definir um valor muito alto?
Eu gostaria de defini-lo para 256k, ou possivelmente mais, mas parece que pode ser excessivo.
É difícil dar uma resposta oficial à questão do desempenho; apenas um benchmark pode fazer isso. Minha resposta é baseada na minha compreensão do código.
O único impacto desse aumento
track_activity_query_size
é que mais memória é alocada na matriz de processos na inicialização do servidor. O tamanho da matriz do processo émax_connections
+autovacuum_max_workers
+ 1 +max_worker_processes
+max_wal_senders
+max_prepared_xacts
, então você deve multiplicartrack_activity_query_size
por esse número para ver quanta memória será alocada.O único impacto no desempenho é que você tem menos memória disponível para armazenar dados em cache e processar consultas.