当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以上内存的服务器上进行测试,不知道会不会有不同的结论。

相关推荐
马克学长2 小时前
SSM校园二手交易系统aqj3i(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·javaweb 开发
利剑 -~2 小时前
letcode数据库题联系
数据库
小程故事多_802 小时前
Agent Skills深度解析,让智能体从“会连接”到“会做事”的核心引擎
数据库·人工智能·aigc
TG:@yunlaoda360 云老大2 小时前
华为云国际站代理商的DDM主要有什么作用呢?
服务器·数据库·华为云
qianshanxue112 小时前
0-3论软件设计模式及其应用、2016-已写(观察者通知,命令-控制指令,适配器-兼容,工厂-多种数据库)
数据库·设计模式
小许学java2 小时前
Spring事务和事务传播机制
java·数据库·spring·事务
小无名呀2 小时前
视图(View)
数据库·mysql
lkbhua莱克瓦243 小时前
MySQL介绍
java·开发语言·数据库·笔记·mysql
teacher伟大光荣且正确3 小时前
关于Qt QReadWriteLock(读写锁) 以及 QSettings 使用的问题
java·数据库·qt