您现在的位置是:首页 > 文章详情

PostgreSQL11在Windows平台上开启large pages(即:HugePage)

日期:2021-06-30点击:837

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

原文链接:https://my.oschina.net/postgresqlchina/blog/5116614
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章