我正在开发 AWS RDS Postgres v9.6 和 v14。我注意到在我们的shared_preload_libraries
参数中,我们已经pg_stat_statement
包含了。我不明白为什么需要在那里。
在 Postgres文档中,它是这样说的:
该模块必须通过添加 pg_stat_statements 到 postgresql.conf 中的 shared_preload_libraries 来加载,因为它需要额外的共享内存。这意味着需要重新启动服务器才能添加或删除模块。
但是,已经内置了其他几个扩展 - 例如我们使用dblink
和hstore
. 这些不需要在shared_preload_libraries
. 为什么pg_stat_statement
行为不同?
我认为阐明这一点将帮助我(希望其他人)更好地理解内置库的工作原理,尤其是在shared_preload_libraries
参数方面。文档似乎对这个主题说得不够多,否则我不知道在哪里可以找到它。
pg_stat_statements
将其数据存储在共享内存段中,PostgreSQL 只允许您在服务器启动时创建共享内存段。所以扩展必须在服务器启动时加载。