在Postgres命令行客户端psql中,有没有办法判断查询是从磁盘运行还是从内存缓存运行?
答案 0 :(得分:7)
查询永远不会“从磁盘”或“从缓存”运行。查询本身始终在内存中。
但如果你的意思是想要查明数据是从共享缓冲区中检索还是直接从文件系统中检索出来,那么你可以使用
explain (analyze on, buffers on, verbose on)
select ....
然后,执行计划将显示从共享缓冲区中获取的块数以及文件系统中的块数。请注意,文件系统中的“读取”实际上可能是从缓存中返回的,文件系统也会管理自己的缓存(Postgres依赖的东西)。