当SGA大于hugepage的时候,Oracle数据库是怎么使用hugepage的

当SGA大于hugepage的时候,Oracle数据库是怎么使用hugepage的

一直以来,我错误的认为:当SGA大于hugepage的时候,SGA将完全不会使用hugepage,转而全部使用普通的内存页。

而今天我在12.2上发现一个现象,当我配置的SGA大于hugepage的时候,SGA同时使用了hugepage与普通的内存页。

先上结论:

结论

(11.2.0.3) 及更高版本中,Oracle 会先把 SGA 尽可能多地分配到大页里;大页用完后,再用普通页分配剩余部分。这样可能会产生额外的共享内存段,但 SGA 总大小保持不变。在这种"混合页模式"下,数据库会先把可用的大页全部耗尽,然后才切换到普通页。

分别测试了12.2与11.2.0.4版本的数据库,发现:12.2对于hugepage的利用率更高,11.2.0.4的利用率比较低。这可能就是我的错觉的由来。

1、在12.2上测试

如下图:

SGA配置的是3G,大于hugepage的2G:

hugepage配置不到2G,剩余4*2M,明显是有被使用:

查看官方文档后发现,是由USE_LARGE_PAGES这个参数控制,默认值为true:实例会尝试使用大页;如果在启动时可用的大页不足,则允许大页与普通页混合使用。官网部分翻译内容如下:

在 Oracle Database 11g Release 2 (11.2.0.2) 中,如果系统配置的大页数量不足,Oracle会退而使用普通页来分配整个 SGA。这会导致剩余的大页被闲置,同时操作系统必须为 Oracle 进程创建大量页表,以便把 SGA 映射到物理页。结果可能出现 ORA-04030 错误,并引发严重的性能下降。 在 Oracle Database 11g Release 2

(11.2.0.3) 及更高版本中,Oracle 会先把 SGA 尽可能多地分配到大页里;大页用完后,再用普通页分配剩余部分。这样可能会产生额外的共享内存段,但 SGA 总大小保持不变。在这种"混合页模式"下,数据库会先把可用的大页全部耗尽,然后才切换到普通页。

该新特性是从11.2.0.3开始就有了。

2、在11.2.0.4上测试

参考12.2的同等配置条件下进行测试

alert日志的信息不如12.2清晰

区别在于12.2对于hugepage的利用率更高,11.2.0.4的利用率比较低。这可能就是我的错觉的由来。由于资源所限,没办法在大于100G以上内存的服务器上进行测试,不知道会不会有不同的结论。

相关推荐
Database_Cool_1 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
爱写代码的阿森2 小时前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
Database_Cool_2 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白3 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
窝子面3 小时前
手搓最简前后端协作-node
javascript·数据库
吳所畏惧3 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈4 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HPFBoy4 小时前
log4net 数据库存日志正确配置
数据库
liuxiaowei34 小时前
【绝版教程】新版MySQL DBA高级实战进阶班 MySQL8.0 姜承尧-腾讯数据库总监
数据库·mysql·dba