Windows 系统 PostgreSQL 手工安装配置方法
自从2020年底开始接触 PostgreSQL 以来就喜欢上了这个数据库,个人感觉比 MySQL 好用,多表联合查询性能好很多,同时也不存在 SQLServer 的版权授权费用问题。搭配 .NET 开发很好用,目前手里的项目全部都是采用 PostgreSQL 进行数据支撑的。
本文主要说一下在 Windows 系统中安装 PostgreSQL 的方法,我这里没有采用 exe 安装包的形式去安装,EDB 发布的那个 exe 安装包形式的对于中文环境数据库的排序规则设定有问题,所以我采用了官方 ZIP 压缩包形式解压后手动安装的形式。
先说一下安装包的获取方式,访问 https://www.postgresql.org/download/windows/
然后点击下载页面的 zip archive 就可以进入下载地址 https://www.enterprisedb.com/download-postgresql-binaries
目前最新稳定版是 PostgreSQL 14.5 点击就可以获取到我们所需要的 zip 压缩包了
这个压缩包原版总共有 280M 大小,但是其实里面有很多东西我们用不到,所以我这里经过和 exe 安装版的进行对比分析之后,整理了一个清理方案
默认其中包含有这些文件夹,我箭头标记的 doc, pgAdmin 4 , StackBuilder ,symbols 四个文件夹可以直接删除,然后进入 bin 目录,再删掉 stackbuilder 相关的一些文件即可,我贴了一个 bat 命令,大家可以直接在 bin 文件夹中执行下面的命令,对相关文件进行删除。
del stackbuilder.exe
del libcurl.dll
del wxbase313u_vc_x64_custom.dll
del wxbase313u_xml_vc_x64_custom.dll
del wxbase313ud_net_vc_x64_custom.dll
del wxmsw313u_adv_vc_x64_custom.dll
del wxmsw313u_core_vc_x64_custom.dll
del wxmsw313ud_aui_vc_x64_custom.dll
del wxmsw313ud_html_vc_x64_custom.dll
del wxmsw313ud_xrc_vc_x64_custom.dll
执行完清理方案之后,整个 PostgreSQL 的文件夹就只剩下 107M 大小了,压缩为 zip 格式之后只有 34.5M
大家可以把清理好之后的文件做一个压缩包各自保存起来,以后换别的电脑安装 PostgreSQL 的时候可以直接用自己弄好的这个压缩包。
接下来开始说如何进行安装 PostgreSQL,文件都准备好之后,首先把文件夹移动到准备安装的位置,我这里移动到了 D:\Software\PostgreSQL 路径
启动 cmd 进入我们的路径 D:\Software\PostgreSQL 切入到 bin 文件夹中
cmd
d:
cd D:\Software\PostgreSQL
cd bin
我们的安装,卸载命令都需要在 bin 文件夹中执行
首先初始化实例
initdb -D "D:\Software\PostgreSQL\data" -E UTF8 -U postgres --locale="Chinese (Simplified)_China.936" --lc-messages="Chinese_China.936" -A scram-sha-256 -W
在 windows 环境下我们采用 UTF8 编码 Chinese (Simplified)_China.936 排序规则,账户加密方式采用 scram-sha-256,数据库的存放位置指定为 D:\Software\PostgreSQL\data
初始化过程中需要输入两次 超级用户口令,用于设置 postgres 用户的密码
数据库初始化完成之后,就可以选择安装为 Windows 服务了,注册服务命令如下
pg_ctl.exe register -D "D:\Software\PostgreSQL\data" -PostgreSQL
接下来我们调整一下 PostgreSQL 的配置信息,默认情况下 PostgreSQL 数据库只能本机连接,我们调整为监听所有 IP 开启外部连接的功能。
在 D:\Software\PostgreSQL\data 文件夹中找到 postgresql.conf
打开 postgresql.conf 文件,找到
#listen_addresses = 'localhost'
然后删除掉前面的 # 修改为
listen_addresses = '*'
保存后关闭文件。
然后还是在 D:\Software\PostgreSQL\data 文件夹中找到 pg_hba.conf 打开后直接情况里面原来的内容,用如下内容进行替换
host all all 0.0.0.0/0 scram-sha-256
host all all ::/0 scram-sha-256
保存后关闭即可,这样就运行了所有的 ipv4 和 ipv6 地址来连接我们的 PostgreSQL 数据库了,因为本文旨在说明 PostgreSQL 的安装,所以对于其他的一些配置不展开进行说明。
当配置文件调整之后我们就可以启动我们安装好的 PostgreSQL 了,只要在 cmd 输入
net start PostgreSQL
也可以通过 Windows 服务来控制启动和停止
启动之后就可以使用连接工具去连接数据库了
如果想要卸载 PostgreSQL 则需要先停止 服务,
net stop PostgreSQL
然后执行卸载命令即可
执行卸载命令也需要向我们开始的操作一样进入 PostgreSQL 路径的 bin 目录,然后执行
pg_ctl.exe unregister -PostgreSQL
这样就卸载完成了,然后直接去 D:\Software 删掉 PostgreSQL 文件夹就可以了。
关于在Windows 环境运行 PostgreSQL 在连接数的配置需要注意以下这个知识点:
由于PostgreSQL所依赖的一些库依赖于user32.dll,后者从内存中一块称为桌面堆(Desktop Heap)的区域中分配内存。桌面堆被分配给了每一个登录的会话,在 Windows 10 以上的操作系统通常一个非交互的会话将会分配给768KB。每个交互登录会话将会分配给20MB的桌面堆,每个postgres进程典型的桌面堆消耗是3.2KB。
- 当作为Windows服务运行时,因为每个非交互会话将会分配768KBMB的桌面堆,所以大约可以支撑 200-220个连接。
- 当在命令行方式运行时,因为每个交互登录会话将会分配20MB的桌面堆,所以大约可以支撑 5000-6000个连接。
以上说的值是操作系统默认的值,这个堆分配大小可以通过调整注册表来进行修改,但是此操作需要非常小心,一旦指定的值过大,系统将无法启动,所以不推荐去手动修改这个值。如果想要了解更多这个知识点可以看 微软官方的这个说明:https://learn.microsoft.com/zh-CN/troubleshoot/windows/win32/user32-kernel32-not-initialize
结合上面的知识点,所以我们在Windows环境下配置 PostgreSQL 的最大连接数时,如果采用 Windows 服务模式运行则配置最大连接数为200比较好,如果需要200个以上的并发连接,则最好采用控制台形式启动运行PostgreSQL,同时结合计算机的可以内存去综合考虑一般100个连接数会消耗 1G内存,所以假设我们电脑内存为8G,考虑到系统本身运行需要2G内存,所以这是 PostgreSQL 的最大连接数配置为500 左右即可。
PostgreSQL控制台运行,启动和停止命令如下:
启动
pg_ctl.exe -D "D:\Software\PostgreSQL\data" start
停止
pg_ctl.exe -D "D:\Software\PostgreSQL\data" stop
-D 的参数 "D:\Software\PostgreSQL\data" 是 PostgreSQL 的数据实例位置
至此 Windows 系统 PostgreSQL 手工安装配置方法 就讲解完了,有任何不明白的,可以在文章下面评论或者私信我,欢迎大家积极的讨论交流,有兴趣的朋友可以关注我目前在维护的一个 .NET 基础框架项目,项目地址如下