确定PostgreSQL查询是从磁盘还是从内存缓存运行?

sai*_*sjd 4 postgresql performance caching postgresql-9.1

在Postgres命令行客户端psql中,有没有办法判断查询是从磁盘还是从内存缓存运行?

a_h*_*ame 7

查询永远不会"从磁盘"或"从缓存"运行.查询本身始终在内存中.

但是,如果您想要查明数据是从共享缓冲区中检索还是直接从文件系统中检索,那么您可以使用

explain (analyze on, buffers on, verbose on) 
select ....
Run Code Online (Sandbox Code Playgroud)

然后,执行计划将显示从共享缓冲区中获取的块数以及文件系统中的块数.请注意,文件系统中的"读取"实际上可能会从缓存中返回,文件系统也会管理自己的缓存(Postgres依赖的东西).