PostgreSQL如何缓存语句和数据?
在Oracle中,SQL语句将缓存在shared_pool中,经常选择的数据将缓存在db_cache中。
PostgreSQL做了什么?将SQL语句和数据缓存在shared_buffers中吗?
通常,只有表和索引文件的内容将被缓存在共享缓冲区中。
查询计划在某些情况下被缓存。确保这一点的最佳方法是一次PREPARE查询,然后每次执行。 查询的结果不会自动缓存。如果您重新运行相同的查询 – 即使它是字母相同的信息,并且没有对数据库执行更新 – 它仍将执行整个计划。当然,它将利用已经在共享缓冲区缓存中的任何表/索引数据;所以不一定要再次读取磁盘中的所有数据。 计划缓存更新 计划缓存通常在每个会话中完成。这意味着只有使计划可以使用缓存版本的连接。其他连接必须使用自己的缓存版本。这不是一个真正的性能问题,因为与重新使用计划相关的保存几乎总是与连接成本相比是微不足道的。 (除非你的查询真的很复杂) 如果您使用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中输入的即席查询。 希望有人可以详细说明任何其他查询计划缓存的情况。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |