pg_stat_database
我们对两者都有时间序列监控pg_stat_statements
。最近,我们一直在观察特定时期内数据库中临时文件的使用情况。但在同一时期,我们无法找到总计等于 pg_stat_database 的总使用量的查询。vacuuming
我们已经在某个地方看到了诸如和 之类的维护操作analyse
可能会导致临时文件的使用,但在此期间我们也找不到此类活动。是否有任何其他内部操作可能导致临时文件使用?
pg_stat_database
我们对两者都有时间序列监控pg_stat_statements
。最近,我们一直在观察特定时期内数据库中临时文件的使用情况。但在同一时期,我们无法找到总计等于 pg_stat_database 的总使用量的查询。vacuuming
我们已经在某个地方看到了诸如和 之类的维护操作analyse
可能会导致临时文件的使用,但在此期间我们也找不到此类活动。是否有任何其他内部操作可能导致临时文件使用?
VACUUM
并且ANALYZE
不应创建临时文件。首先,统计数据不一定
pg_stat_database
100%准确。其次,pg_stat_database.temp_bytes
测量临时文件的大小(以字节为单位),pg_stat_statement.temp_blks_read
测量读取了多少个 8kB 块,并pg_stat_statement.temp_blks_written
测量了写入的 8kB 块。临时文件可以多次读取,因此我要比较的是
pg_stat_statement.temp_blks_written
和的总和pg_stat_database.temp_bytes
。后者应该是前者的8192倍左右。如果您发现显着差异,也许您没有收集所有语句的统计信息。设置
pg_stat_activity.track
为all
,以便 pg_stat_statements 还收集非客户端发送的语句的统计信息,例如数据库函数或过程内的语句以及触发器发出的语句。