类型: string
上下文: postmaster
重新开始: true

这个变量指定一个或者多个要在服务器启动时预载入的共享库。它包含一个由逗号分隔的库名列表,其中每个名称都会按sql-load命令的方式解析。项之间的空格会被忽略,如果需要在库名中包含空格或者逗号,请把库名放在双引号内。这个参数只能在服务器启动时设置。如果指定的库没有找到,服务器将无法启动。

有些库需要执行只能在postmaster启动时发生的特定操作,例如分配共享内存、保留轻量级锁 或者启动后台工作者。这些库必须通过这个参数在服务器启动时载入。每个库的详情请见文档。

其他库也能被预载入。通过预载入一个共享库,当该库被第一次使用时就可以避免库的启动时间。 不过,启动每个新服务器进程的时间可能会略有增加,即使该进程从不使用该库。因此,推荐只 把这个参数用于那些要在大多数会话中使用的库上。还有,改变这个参数要求重启服务器,因此 对于短期的调试任务来说这不是好的选择,应该转用 session_preload_libraries

在 Windows 主机上,在服务器启动时预载入一个库并不会减少启动每个新服务器进程所需的 时间;每一个服务器进程将会重新载入预载入的库。不过,对于那些要在postmaster启动时 执行操作的库来说,Windows 主机上的 shared_preload_libraries任然有用。

建议 [EN]

Primarily used for custom C libraries (data types, stored procedures) which you expect your application to use heavily. Trades memory overhead for these libraries against load time, so really should only be used for libraries you expect most queries to require.

条评论