为 RDS for Oracle 实例开启大页
Amazon RDS for Oracle 支持 Linux 内核大页,提高了数据库扩展能力。大页会导致页表变小,花在内存管理上的 CPU 时间也减少,从而提高大数据库实例的性能。有关更多信息,请参阅 Oracle 文档中的巨页概述
您可以将大页与所有支持的 RDS for Oracle 版本和修订版一起使用。
use_large_pages
参数控制是否为数据库实例开启大页。该参数的可能设置包括 ONLY
、FALSE
和 {DBInstanceClassHugePagesDefault}
。在 Oracle 的默认数据库参数组中,use_large_pages
参数设置为 {DBInstanceClassHugePagesDefault}
。
要控制是否自动为数据库实例开启大页,您可以在参数组中使用 DBInstanceClassHugePagesDefault
公式变量。该值如下所示确定:
-
对于下表中提及的数据库实例类别,
DBInstanceClassHugePagesDefault
默认情况下计算结果始终为FALSE
,而use_large_pages
的计算结果为FALSE
。如果数据库实例类至少具有 14GiB 内存,您可为这些数据库实例类手动开启大页。 -
对于未在下表中提及的数据库实例类别,如果数据库实例类别内存小于 14 GiB,则
DBInstanceClassHugePagesDefault
的计算结果始终为FALSE
。此外,use_large_pages
计算结果为FALSE
。 -
对于未在下表中提及的数据库实例类别,如果实例类别内存至少为 14 GiB 且小于 100 GiB,则
DBInstanceClassHugePagesDefault
默认情况下计算结果为TRUE
。此外,use_large_pages
计算结果为ONLY
。您可以通过将use_large_pages
设置为FALSE
,手动关闭大页。 -
对于未在下表中提及的数据库实例类别,如果实例类内存至少为 100 GiB,则
DBInstanceClassHugePagesDefault
的计算结果始终为TRUE
。此外,use_large_pages
的计算结果为ONLY
,并且不能禁用大页。
原定设置情况下,不为以下数据库实例类开启大页。
数据库实例类系列 | 原定设置情况下未开启大页的数据库实例类 |
---|---|
db.m5 |
db.m5.large |
db.m4 |
db.m4.large,db.m4.xlarge,db.m4.2xlarge,db.m4.4xlarge,db.m4.10xlarge |
db.t3 |
db.t3.micro,db.t3.small,db.t3.medium,db.t3.large |
有关数据库实例类的更多信息,请参阅数据库实例类的硬件规格。
要为新的或现有的数据库实例手动开启大页,请将 use_large_pages
参数设置为 ONLY
。大页不能与 Oracle 自动内存管理 (AMM) 一起使用。如果将 use_large_pages
参数设置为 ONLY
,则还必须将 memory_target
和 memory_max_target
都设置为 0
. 有关为数据库实例设置数据库参数的更多信息,请参阅Amazon RDS 的参数组。
您也可以设置 sga_target
、sga_max_size
和 pga_aggregate_target
参数。当设置系统全局区域 (SGA) 和程序全局区域 (PGA) 内存参数时,请将这些值加在一起。从可用实例内存 (DBInstanceClassMemory
) 中减去此计算得到的总计值,可确定大页分配后的可用内存。必须保留至少 2 GiB 可用内存或总可用实例内存的 10% (取两者中较小的值)。
配置参数之后,必须重启数据库实例才能使更改生效。有关更多信息,请参阅“重启中的数据库实例”。
注意
Oracle 数据库实例会推迟对与 SGA 相关的初始化参数的更改,直到您重启实例而不进行故障转移。在 Amazon RDS 控制台中,选择重启,但不要 选择通过故障转移重启。在 AWS CLI 中,调用带 reboot-db-instance
参数的 --no-force-failover
命令。在故障转移期间或导致实例重启的其他维护操作期间,数据库实例不会处理与 SGA 相关的参数。
针对大页,以下示例参数配置手动启用大页。您应根据自己的需要设置这些值。
memory_target = 0
memory_max_target = 0
pga_aggregate_target = {DBInstanceClassMemory*1/8}
sga_target = {DBInstanceClassMemory*3/4}
sga_max_size = {DBInstanceClassMemory*3/4}
use_large_pages = ONLY
假设在参数组中设置以下参数值。
memory_target = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
memory_max_target = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
pga_aggregate_target = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*1/8}, 0)
sga_target = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
sga_max_size = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
use_large_pages = {DBInstanceClassHugePagesDefault}
参数组由内存小于 100 GiB 的 db.r4 数据库实例类使用。如果使用这些参数设置并将 use_large_pages
设置为 {DBInstanceClassHugePagesDefault}
,则为 db.r4 实例开启大页。
请考虑在参数组中设置了以下参数值的另一个示例。
memory_target = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
memory_max_target = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
pga_aggregate_target = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*1/8}, 0)
sga_target = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
sga_max_size = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
use_large_pages = FALSE
该参数组由内存小于 100 GiB 的 db.r4 数据库实例类和 db.r5 数据库实例类使用。如果使用这些参数设置,将在 db.r4 和 db.r5 实例上关闭大页。
注意
如果该参数组由具有至少 100 GiB 内存的 db.r4 数据库实例类或 db.r5 数据库实例类使用,则将覆盖 FALSE
的 use_large_pages
设置并将其设置为 ONLY
。在这种情况下,将发送有关覆盖的客户通知。
当大页在数据库实例上处于活动状态后,您可以启用增强监控以查看大页信息。有关更多信息,请参阅使用增强监控来监控操作系统指标。