

PostgreSQL11在Windows平台上开启large pages(即:HugePage)
source link: https://my.oschina.net/postgresqlchina/blog/5116614
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

从pg11开始在windows平台上支持large pages(即:HugePage)
- 测试环境:
Windows 10 1909 18363.1198
PostgreSQL 11.10,从edb公司官网下载的,介质名称为“postgresql-11.10-1-windows-x64.exe”
虚拟机环境,分配给虚拟机8G物理内存
- 开启large pages的步骤
0.安装PostgreSQL 11.10
1.关闭windows uac
控制面板--系统和安全--更改用户账户控制设置--改为'从不通知',点击确定。
2.在windows组策略编辑器,赋予运行PostgreSQL的操作系统用户'锁定内存页'的权力(Lock Pages in Memory)
计算机配置\Windows 设置\安全设置\本地策略\用户权利分配\下的“锁定内存页”这个策略。
3.将windows服务中的postgresql-x64-11这个服务改为手动启动。
4.重新启动OS
5.设置postgresql.conf的配置参数huge_pages=on
6.设置postgresql.conf的配置参数shared_buffers=2048MB
7.以管理员身份打开cmd窗口,执行pg_ctl start -D e:\postgresql\11\data启动PostgreSQL
8.验证是否启用
E:\PostgreSQL\11\bin>psql -d postgres -U postgres -p 5432
用户 postgres 的口令:
psql (11.10)
输入 'help' 来获取帮助信息.
postgres=# show huge_pages;
huge_pages
------------
on
(1 行记录)
postgres=# show shared_buffers;
shared_buffers
----------------
2GB
(1 行记录)
postgres=# select version();
version
-------------------------------------------------------------
PostgreSQL 11.10, compiled by Visual C++ build 1914, 64-bit
(1 行记录)
- 注意事项:
1.根据PostgreSQL.org官方文档https://www.postgresql.org/docs/11/runtime-config-resource.html#GUC-HUGE-PAGES,
当启用large pages时,不能用Windows服务中的PostgreSQL服务启动postgresql,经过我测试,
在这种情况下,用Windows服务中的PostgreSQL服务是启动不了postgresql的,Windows事件查看器中的报错为:
2020-12-08 12:20:48.285 HKT [3136] 致命错误: 无法在内存中启用锁定页用户权限
2020-12-08 12:20:48.285 HKT [3136] 提示: 为运行PostgreSQL的Windows用户帐户分配内存中的锁定页用户权限.
2.在该虚拟机8G内存之前,我分配的是2G内存,然后以管理员身份在cmd中pg_ctl 启动 PostgreSQL(配置参数为shared_buffers=128MB,huge_pages=on)有下面的报错,估计是物理内存小的原因:
E:\PostgreSQL\11\bin>pg_ctl start -D e:/postgresql/11/data
等待服务器进程启动 ....2020-12-08 12:26:58.503 HKT [6908] 日志: 正在监听IPv6地址'::',端口 5432
2020-12-08 12:26:58.503 HKT [6908] 日志: 正在监听IPv4地址'0.0.0.0',端口 5432
2020-12-08 12:26:58.821 HKT [6908] 致命错误: 无法创建共享内存段: 错误码1450
2020-12-08 12:26:58.821 HKT [6908] 详细信息: 系统调用CreateFileMapping(size=148897792, name=Global/PostgreSQL:e:/postgresql/11/data)执行失败.
2020-12-08 12:26:58.822 HKT [6908] 日志: 数据库系统已关闭
已停止等待
pg_ctl: 无法启动服务器进程
检查日志输出.
E:\PostgreSQL\11\bin>
参考文档:
https://www.postgresql.org/docs/11/runtime-config-resource.html#GUC-HUGE-PAGES
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK