对于重度依赖于内存的应用数据库而言,hugepage是经常会被使用的。例如在Oracle中我们一般建议当SGA大于8GB时使用hugepage,而在postgresql中我们也建议当内存较大的时候开启hugepage。
为什么呢?这是因为Linux需要维护虚拟内存地址与物理内存的映射关系,为了提升转换性能,最好这部分能够cache在cpu的cache里面。页越大,映射表就越小。使用huge page可以减少页表大小。

接下来我们来看看pg中hugepage的设置方法。

设置方法:

1、首先我们需要看看数据库使用了多少内存。

获得PID
$ head -1 $PGDATA/postmaster.pid
4170

计算数据库启动用了多少内存,指定进程ID
$ pmap 4170 | awk ‘/rw-s/ && /zero/ {print $2}’
6490428K

2、计算需要使用多少hugepage
查看hugepage页大小
grep ^Hugepagesize /proc/meminfo
Hugepagesize: 2048 kB

计算需要多少hugepage(或者直接使用shared_buffer/hugepage页大小)
6490428 / 2048 = 3169.15

一般建议设置大于内存数,因为这里我们取整为:3170

3、分配hugepage
vi /etc/sysctl.conf
vm.nr_hugepages = 3170
sysctl -p

4、设置数据库参数
huge_pages = on # 或者try
shared_buffers = 64GB # 使用64G内存

5、重启数据库并查看hugepage使用情况
cat /proc/meminfo |grep -i huge

AnonHugePages: 6144 kB
HugePages_Total: 3170 ## 设置的HUGE PAGE
HugePages_Free: 3170 ## 这个是当前剩余的,但是实际上真正可用的并没有这么多,因为被PG锁定了3170个大页
HugePages_Rsvd: 3170 ## 启动PG时申请的HUGE PAGE
HugePages_Surp: 0
Hugepagesize: 2048 kB ## 当前大页2M

注意事项:

1、当配置参数huge_pages设置为on时,若PG启动时需要注册的共享内存大于操作系统提供的Huge Page大小时,数据库将无法启动。推荐将huge_pages参数设置为try,在此种场景下,PostMaster将会改为申请普通内存。
2、如果连接数较少时,使用HUGE PAGE性能不如不使用。因此我们可以尽量使用连接池,减少连接数,提升性能。

PostgreSQL Huge Page使用最佳实践相关推荐

  1. PostgreSQL Huge Page 使用建议 - 大内存主机、实例注意

    标签 PostgreSQL , Linux , huge page , shared buffer , page table , 虚拟地址 , 物理地址 , 内存地址转换表 背景 当内存很大时,除了刷 ...

  2. 技术实践丨PostgreSQL开启Huge Page场景分析

    PostgreSQL用户经常发现,服务端在连接数较大的情况下,会出现系统内存消耗过多的情况,严重者可能会造成OOM.但是服务端配置的共享内存(shared_buffers,wal_buffers等)是 ...

  3. 时间、空间、对象 海量极速多维检索 - 阿里云RDS PostgreSQL最佳实践

    标签 PostgreSQL , 时间 , 空间 , 对象属性 , 多维度检索 , 海量 , 空间索引 , 数据分区 , 块级索引BRIN , 多级索引 , GIN倒排索引 , JSON索引 , 多列索 ...

  4. 分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践

    确定应用程序类型 在 Citus 集群上运行高效查询要求数据在机器之间正确分布.这因应用程序类型及其查询模式而异. 大致上有两种应用程序在 Citus 上运行良好.数据建模的第一步是确定哪些应用程序类 ...

  5. 《PostgreSQL服务器编程》一一1.8 程序设计最佳实践

    本节书摘来自华章计算机<PostgreSQL服务器编程>一书中的第1章,第1.8节,作者:(美)Hannu Krosing, Jim Mlodgenski, Kirk Roybal 著,更 ...

  6. 也谈PostgreSQL的Vacuum机制及其最佳实践

    点击▲关注 "数据和云"   给公众号标星置顶 更多精彩 第一时间直达 前几天,我们就如何对数据库,表进行合适的vacuum策略,对已有方法进行了总结,回顾 新特性:postgre ...

  7. (新零售)商户网格化运营 - 阿里云RDS PostgreSQL最佳实践

    原文地址 背景 伟大的马老师说: "纯电商时代很快会结束,未来的十年.二十年,没有电子商务这一说,只有新零售这一说,也就是说线上线下和物流必须结合在一起,才能诞生真正的新零售" 线 ...

  8. 前沿分享|数澜科技联合创始人副总裁 江敏:基于云原生数据仓库AnalyticDB PostgreSQL的最佳实践

    简介:本篇内容为2021云栖大会-云原生数据仓库AnalyticDB技术与实践峰会分论坛中,数澜科技联合创始人&副总裁江敏关于"基于云原生数据仓库AnalyticDB Postgre ...

  9. MongoDB最佳实践(转)

    将MongoDB加入到我们的服务支持列表中,是整个团队年初工作计划中的首要任务.但我们感觉如果先添加一项对NoSQL存储的支持,而不是先升级已支持的关系型数据库,可能对用户不太好,毕竟目前的用户都使用 ...

最新文章

  1. No CurrentSessionContext configured ------Hibernate
  2. 剑指offer 算法 (时间效率)
  3. mysql怎么显示、查询现有数据库列表?(show databases;)怎么删除现有数据库?(drop database <库名>)
  4. 容器编排技术 -- Kubernetes 为 Namespace 设置最小和最大内存限制
  5. 【收藏】请不要做浮躁的人
  6. IntelliJ IDEA中Spring Boot项目自定义Banner
  7. 如果不考虑钱和面子,你最想做什么工作?
  8. CentOS6上安装Flash Player
  9. 在Linux上配置xampp后远程访问域名报错
  10. Gephi下载百度云加速,舒服了
  11. 空城机在CSDN的四周年创作纪念日
  12. 《惢客创业日记》2020.11.25-27(周三)为什么是我?
  13. apidoc 自动化生成 api接口文档
  14. 昨天学了js的控制css样式,自己做了个算卦小程序
  15. c语言mon什么意思,c'mon是什么意思啊 – 手机爱问
  16. 开源许可协议 Open Source License
  17. 实验四 数据查询——简单查询 Sql Server数据库实验
  18. scala中的breakable{}实现continu 与break
  19. 科学摆放鼠标可以预防鼠标手
  20. 01-01-osg GL3 环境搭建

热门文章

  1. QT:设置子窗口显示在父窗口的位置(绝对坐标)
  2. ADAMoracle预言机节点奖惩机制保障喂价服务的精准性
  3. 易烊千玺成为优瑞家全球品牌代言人
  4. 拼多多改销量有什么风险
  5. 【转】机器学习发展简史
  6. 【数据挖掘】Kaggle泰坦尼克号分类与预测
  7. jailbreakme问题-原生1.1.2破解经验分享!
  8. HDR Efex Pro 2 for mac(DHR滤镜工具)
  9. 程序员招募接私活 ,外包众包接单方法‘
  10. 高考杂志高考杂志社高考编辑部2023年第1期目录