[转帖]从pg11开始在windows平台上支持large pages(即:HugePage)

本文转自:https://pgfans.cn/a?id=787

测试环境:

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.eu/events/pgconfeu2019/sessions/session/2664/slides/211/PostgreSQL%20under%20Windows.pdf

https://www.postgresql.org/docs/11/runtime-config-resource.html#GUC-HUGE-PAGES

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-the-lock-pages-in-memory-option-windows?view=sql-server-ver15

你可能感兴趣的:(PostgreSQL数据库,Windows,postgres,postgresql,windows,hugepage,largepages)