Temos monitoramento de série temporal tanto pg_stat_database
em pg_stat_statements
. Recentemente, temos observado o uso de arquivos temporários em nosso banco de dados durante determinado período. Mas, para o mesmo período, não conseguimos encontrar consultas que no total correspondam ao uso total do pg_stat_database. Vimos em algum lugar operações de manutenção como vacuuming
e analyse
podem causar o uso de arquivos temporários, mas durante o período também não conseguimos encontrar tais atividades. Existem outras operações internas que podem causar o uso de arquivos temporários?
relate perguntas
-
Posso ativar o PITR depois que o banco de dados foi usado
-
Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo
-
Os procedimentos armazenados impedem a injeção de SQL?
-
Sequências Biológicas do UniProt no PostgreSQL
-
Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?
VACUUM
eANALYZE
não deve criar arquivos temporários.Em primeiro lugar, as estatísticas
pg_stat_database
não precisam de ser 100% precisas. Segundo,pg_stat_database.temp_bytes
mede o tamanho dos arquivos temporários em bytes, quepg_stat_statement.temp_blks_read
mede quantos blocos de 8kB foram lidos, epg_stat_statement.temp_blks_written
mede os blocos de 8kB gravados.Um arquivo temporário pode ser lido mais de uma vez, então o que eu compararia é a soma de
pg_stat_statement.temp_blks_written
epg_stat_database.temp_bytes
. Este último deve ser cerca de 8.192 vezes o primeiro.Se você detectar uma diferença notável, talvez não colete estatísticas para todas as declarações. Defina
pg_stat_activity.track
comoall
, para que pg_stat_statements também reúna estatísticas de instruções que não foram enviadas pelo cliente, como instruções dentro de funções de banco de dados ou procedimentos e instruções emitidas por um gatilho.