为什么PostgreSQL查询在服务器启动后的第一个请求中比在后续请求期间慢?

Flo*_*nt2 1 postgresql ruby-on-rails postgresql-performance

我正在使用PostgreSQL 9.1.1和Rails 3.2.8.使用NewRelic的开发模式我注意到在我的服务器启动或重启后的第一个请求期间,与后续请求期间相比,几个SQL查询需要更长的时间.

是否有任何理由,这是由于准备好的陈述?

fvu*_*fvu 5

刚启动后,没有任何索引被加载到内存中,因此服务器将不得不进行大量非常慢的磁盘读取.随着活动的进行,越来越多的索引页面被加载到内存中,咨询这些页面当然要快得多.

  • 如果在9.2+上使用``EXPLAIN(BUFFERS,ANALYZE)/*query*/;``,你可以看到这个.第一次执行将有``read``计划项目,后续执行将使``shared``非零. (2认同)