在Oracle中,SQL语句将缓存在shared_pool中,经常选择的数据将缓存在db_cache中.
PostgreSQL做什么?SQL语句和数据是否会缓存在shared_buffers中?
Edm*_*und 45
通常,只有表和索引文件的内容将缓存在共享缓冲区空间中.
在某些情况下缓存查询计划.确保这一点的最佳方法是预先查询一次查询,然后每次执行它.
查询的结果不会自动缓存.如果你重新运行相同的查询 - 即使它的字母相同,并且没有对数据库执行更新 - 它仍将执行整个计划.当然,它将使用已经在共享缓冲区缓存中的任何表/索引数据; 所以它不一定要再次从磁盘读取所有数据.
计划缓存通常在每个会话中完成.这意味着只有使计划可以使用缓存版本的连接.其他连接必须制作和使用自己的缓存版本.这不是一个真正的性能问题,因为与重新连接的成本相比,重复使用计划所节省的费用几乎总是微乎其微.(除非你的疑问真的很复杂.)
如果你使用PREPARE 它会缓存:http://www.postgresql.org/docs/current/static/sql-prepare.html
当查询在PL/plSQL函数中时它会缓存:http://www.postgresql.org/docs/current/static/plpgsql-implementation.html#PLPGSQL-PLAN-CACHING
它不会缓存在psql中输入的即席查询.
希望其他人可以详细说明查询计划缓存的任何其他情况.
归档时间: |
|
查看次数: |
23318 次 |
最近记录: |