为 RDS for Oracle 实例开启大页 - Amazon Relational Database Service

为 RDS for Oracle 实例开启大页

Amazon RDS for Oracle 支持 Linux 内核大页,提高了数据库扩展能力。大页会导致页表变小,花在内存管理上的 CPU 时间也减少,从而提高大数据库实例的性能。有关更多信息,请参阅 Oracle 文档中的巨页概述

您可以将大页与所有支持的 RDS for Oracle 版本和修订版一起使用。

use_large_pages 参数控制是否为数据库实例开启大页。该参数的可能设置包括 ONLYFALSE{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_targetmemory_max_target 都设置为 0. 有关为数据库实例设置数据库参数的更多信息,请参阅Amazon RDS 的参数组

您也可以设置 sga_targetsga_max_sizepga_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 数据库实例类使用,则将覆盖 FALSEuse_large_pages 设置并将其设置为 ONLY。在这种情况下,将发送有关覆盖的客户通知。

当大页在数据库实例上处于活动状态后,您可以启用增强监控以查看大页信息。有关更多信息,请参阅使用增强监控来监控操作系统指标