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

相关推荐
coding-fun13 小时前
电子发票批量提取导出合并助手
大数据·数据库
leo_23213 小时前
备份&恢复--SMP(软件制作平台)语言基础知识之三十九
数据库·数据安全·开发工具·smp(软件制作平台)·应用系统
何以不说话13 小时前
mysql 的主从复制
运维·数据库·学习·mysql
二二牧人13 小时前
qemu arm64 linux开发环境搭建
linux·运维·数据库
茁壮成长的露露13 小时前
导出导入工具mongoexport、mongoimport
数据库·mongodb
Coder_Boy_13 小时前
基于SpringAI的在线考试系统-考试系统DDD(领域驱动设计)实现步骤详解
java·数据库·人工智能·spring boot
workflower14 小时前
软件需求规约的质量属性
java·开发语言·数据库·测试用例·需求分析·结对编程
橘子1314 小时前
MySQL库的操作(二)
数据库·mysql·oracle
todoitbo14 小时前
多模数据库技术解析:以KingbaseES MongoDB兼容版为例
数据库·mongodb·kingbasees·金仓数据库
正在走向自律15 小时前
ksycopg2实战:Python连接KingbaseES数据库的完整指南
数据库·python·国产数据库·kingbase·kingbasees·数据库平替用金仓·ksycopg2