我在C#中有一个应用程序,shared_buffers
该应用程序的首次启动时应将Postgresql服务器设置为至少512MB。因此,我需要在代码中执行以下操作:
shared_buffers
小于512MB。shared_buffers
为512MB。如何在代码中做到这一点?
在PostgreSQL 9.4及更高版本中,您可以ALTER SYSTEM SET
用来修改postgresql.auto.conf
以添加参数。
因此,您可以:
SHOW shared_buffers;
如果太低:
ALTER SYSTEM
SET shared_buffers = '512MB';
然后,您必须重新启动PostgreSQL。从设计上讲,这无法从PostgreSQL内部完成,因为如果重新启动过程中出现问题,那么您将无法再连接到它,因此您很容易将自己锁定在外。您可以重新加载配置有SELECT pg_reload_conf()
,但shared_buffers
只生效满重启,而不仅仅是一个配置重装。
因此,一旦更改了配置,您的应用将需要使用特定于外部OS和特定于安装方法的方式来重新启动PostgreSQL。或者只是告诉用户为您重新启动它。
重新启动:
对于安装和管理了PostgreSQL自定义的任何平台(Windows,Mac或Linux),请使用pg_ctl restart
。
使用方法:在Windows上,安装为服务net stop [servicename]
,然后net start [servicename]
在系统范围内安装了PostgreSQL的旧Linux(pre-systemd)上:使用service
命令,例如service restart [servicename]
。这必须以root用户或通过sudo运行。
在系统范围内安装了PostgreSQL的较新Linux(systemd)上:使用 systemctl restart [servicename].service
如果您使用的是较旧的PostgreSQL,而无需ALTER SYSTEM SET
打开,修改和编写postgresql.conf
。
为了避免解析和修改整个过程,postgresql.conf
我发现附加该include_dir = 'conf.d'
选项,然后conf.d/myapp.conf
在datadir中创建一个仅具有我想要的配置替代值很有用的方法。
include_dir
在9.3及更高版本中可用。对于较旧的版本,您只需postgresql.conf
直接进行修改即可。
如果您的应用程序首先负责安装和设置PostgreSQL,则可以在启动数据库shared_buffers
之后initdb
和之前在配置文件中设置所需的设置。
如果您要在应用程序中捆绑PostgreSQL,则我强烈希望采用这种方法。不要使用安装程序,只需将二进制文件捆绑在安装程序中即可。通过postgres
直接调用命令或使用来启动应用程序时启动PostgreSQL pg_ctl
。程序退出时将其停止。使用非默认端口(即不使用的端口是5432),也没有一个下安装postgres
的用户,把数据目录放到类似%PROGRAMDATA%\MyApp\postgres
否则避免与官方的PostgreSQL安装冲突。这将为您节省很多痛苦。
看:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句