在与 Oracle 合作了几年后,我刚刚搬到了 PostgreSQL。我一直在使用 PostgreSQL 数据库研究应用程序(Java、JDBC)中准备好的语句的一些性能问题。
Oracle 在其 SGA 中缓存准备好的语句 - 准备好的语句池在数据库连接之间共享。
PostgreSQL 文档似乎没有表明这一点。这是文档中的片段(https://www.postgresql.org/docs/current/static/sql-prepare.html) -
准备好的语句仅在当前数据库会话期间持续。当会话结束时,准备好的语句被遗忘,因此必须重新创建它才能再次使用。这也意味着单个准备好的语句不能被多个同时的数据库客户端使用;但是,每个客户都可以创建自己的准备好的语句来使用。
我只是想确保我理解这一点是正确的,因为对于数据库来说,实现某种常用的准备好的语句的公共池似乎是非常基本的。
如果 PostgreSQL 不缓存这些,则意味着每个需要大量数据库事务的应用程序都需要开发某种可以跨连接重用的准备好的语句池。
如果您以前使用过 PostgreSQL,我将不胜感激。