我试着去理解PostgreSQL中的扩展和插件之间的功能差异。在我有限的理解下,我发现扩展是用源代码构建的,并使用Create extension extension_name command
的控制文件加载。
# extension_name
comment = 'extension purpose'
default_version = '1.0'
module_pathname = '$libdir/extension_name'
relocatable = true
而插件,我们可以建立相同的扩展,但加载库修改postgresql.conf
文件如下.
shared_preload_libraries = '$libdir/plugin_name' # (change requires restart)
请纠正我以上的理解,如果我错了。我想知道我们如何决定该功能应该作为扩展或插件在PostgreSQL中?我找不到很多关于插件在互联网上,有什么参考我可以用来更好地理解它?
1条答案
按热度按时间3bygqnnd1#
如果扩展在被会话中的用户“调用”之前需要改变服务器的行为,那么它需要被预加载。例如pg_stat_statement收集所有正在运行的语句的统计信息,即使在会话中也从未检查过同名视图。所以要做到这一点,就需要预先加载。不需要预先加载就能完成任务的扩展通常会这样做--当在每个会话中第一次调用所需特征时,它们将被加载。