將暫存資料存放在 RDS for Oracle 執行個體儲存體中 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將暫存資料存放在 RDS for Oracle 執行個體儲存體中

在支援的 RDS for Oracle DB 資料庫執行個體類別上,將執行個體儲存體用於暫存資料表空間和資料庫智慧型快閃記憶體快取 (快閃記憶體快取)。

RDS for Oracle 執行個體儲存體的概觀

「執行個體儲存體」為 RDS for Oracle 資料庫執行個體提供暫時的區塊層級儲存體。您可以使用執行個體儲存體來暫時儲存經常變更的資訊。

執行個體儲存體是以實際連接至主機電腦的非揮發性記憶體儲存裝置 (NVMe) 為基礎。此儲存體已針對低延遲、隨機 I/O 效能,以及循序讀取輸送量進行最佳化。

執行個體儲存體的大小會因資料庫執行個體類型而有所不同。如需執行個體儲存體的詳細資訊,請參閱《適用於 Linux 執行個體的 Amazon Elastic Compute Cloud 使用者指南》中的 Amazon EC2 執行個體儲存體

RDS for Oracle 執行個體儲存體中的資料類型

您可以將下列類型的 RDS for Oracle 暫存資料放置在執行個體儲存體中:

暫存資料表空間

Oracle 資料庫會使用暫存資料表空間,存放不適合記憶體的中繼查詢結果。較大的查詢可能會產生大量中繼資料,這些資料需要暫時快取,但不需要持續存在。尤其,暂存資料表空間對於排序、雜湊彙總和聯結很有用。如果 RDS for Oracle 資料庫執行個體使用企業版或標準版 2,您可以在執行個體儲存體中放置暫存資料表空間。

快閃記憶體快取

快閃記憶體快取可改善傳統路徑中單一區塊隨機讀取的效能。最佳實務是調整快取的大小,以容納大部分的作用中資料集。如果 RDS for Oracle 資料庫執行個體使用企業版,您可以在執行個體儲存體中放置快閃記憶體快取。

根據預設,執行個體儲存體會針對暫存資料表空間設定,但不會針對快閃記憶體快取設定。您無法在執行個體儲存體中放置 Oracle 資料檔和資料庫日誌檔。

RDS for Oracle 執行個體儲存體的好處

您可能會考慮使用執行個體儲存體,存放可能遺失的暫存檔案和快取。如果您想要改善資料庫效能,或是如果不斷增加的工作負載導致 Amazon EBS 儲存體發生效能問題,請考慮擴展到支援執行個體儲存體的執行個體類別。

將暫存資料表空間和快閃記憶體快取放置在執行個體儲存體上,您可以獲得下列好處:

  • 較低的讀取延遲

  • 較高的輸送量

  • 減少 Amazon EBS 磁碟區的負載

  • 降低 Amazon EBS 負載,因為減少了 Amazon EBS 負載

  • 更不需要佈建高 IOPS,可能會降低整體成本

將暫存資料表空間放置在執行個體儲存體上,您可以立即提升使用暫存空間的查詢效能。將快閃記憶體快取放置在執行個體儲存體時,快取區塊讀取的延遲通常比 Amazon EBS 讀取的延遲低得多。快閃記憶體快取必須先「熱身」,然後才能提供效能優勢。快取會自行熱身,因為資料庫會在區塊老化而離開資料庫緩衝區快取時,將這些區塊寫入至快閃記憶體快取。

注意

在某些情況下,快閃記憶體快取會由於快取管理而造成效能負荷。在生產環境中開啟快閃記憶體快取之前,建議您先分析工作負載並在測試環境中測試快取。

RDS for Oracle 執行個體儲存體支援的執行個體類別

Amazon RDS 支援下列資料庫執行個體類別的執行個體儲存體:

  • db.m5d

  • db.r5d

  • db.x2idn

  • db.x2iedn

RDS for Oracle 僅支援 BYOL 授權模式的上述資料庫執行個體類別。如需詳細資訊,請參閱Oracle 資料庫執行個體類別支援的 RDS為 EE 和攜帶您自己的許可證(BYOL)SE2

若要查看所支援資料庫執行個體類型的總執行個體儲存體,請在 AWS CLI 中執行下列命令。

aws ec2 describe-instance-types \ --filters "Name=instance-type,Values=*5d.*large*" \ --query "InstanceTypes[?contains(InstanceType,'m5d')||contains(InstanceType,'r5d')][InstanceType, InstanceStorageInfo.TotalSizeInGB]" \ --output table

上述命令會傳回執行個體儲存體的原始裝置大小。RDS for Oracle 會將這個空間的一小部分用於組態。執行個體儲存體中可供暫存資料表空間或快閃記憶體快取使用的空間略小。

RDS for Oracle 執行個體儲存體支援的引擎版本

下列 RDS for Oracle 引擎版本支援執行個體儲存體。

  • 21.0.0.0.ru-2022-01.rur-2022-01.r1 或更高的 Oracle Database 21c 版本

  • 19.0.0.0.ru-2021-10.rur-2021-10.r1 或更高的 Oracle Database 19c 版本

RDS for Oracle 執行個體儲存體支援的 AWS 區域

執行個體儲存體適用於支援一或多個這些執行個體類型的所有 AWS 區域 區域。如需 db.m5d 和 db.r5d 執行個體類別的詳細資訊,請參閱 數據庫實例類。如需 Amazon RDS for Oracle 支援之執行個體類別的詳細資訊,請參閱 Oracle 資料庫執行個體類別的 RDS

RDS for Oracle 執行個體儲存體的成本

執行個體儲存體的成本內建於執行個體儲存體開啟的執行個體成本中。在 RDS for Oracle 資料庫執行個體上啟用執行個體儲存體,不會產生額外成本。如需執行個體儲存體開啟的執行個體的詳細資訊,請參閱 RDS for Oracle 執行個體儲存體支援的執行個體類別

開啟 RDS for Oracle 執行個體儲存體

若要開啟 RDS for Oracle 暫存資料的執行個體儲存體,請執行下列其中一個動作:

設定 RDS for Oracle 執行個體儲存體

根據預設,100% 的執行個體儲存體空間會配置給暫存資料表空間。若要設定執行個體儲存體,將空間配置給快閃記憶體快取和暫存資料表空間,請在執行個體的參數群組中設定下列參數:

db_flash_cache_size={DBInstanceStore*{0,2,4,6,8,10}/10}

此參數指定配置給快閃記憶體快取的儲存空間量。此參數僅適用於 Oracle 資料庫企業版。預設值為 {DBInstanceStore*0/10}。如果您為 db_flash_cache_size 設定非零值,則您的 RDS for Oracle 執行個體會在重新啟動執行個體之後啟用快閃記憶體快取。

rds.instance_store_temp_size={DBInstanceStore*{0,2,4,6,8,10}/10}

此參數指定配置給暫存資料表空間的儲存空間量。預設值為 {DBInstanceStore*10/10}。此參數對 Oracle 資料庫企業版而言是可修改的,對於標準版 2 而言則是唯讀的。如果您為 rds.instance_store_temp_size 設定非零值,Amazon RDS 會在執行個體儲存體中為暫存資料表空間配置空間。

您可以針對不使用執行個體儲存體的資料庫執行個體設定 db_flash_cache_sizerds.instance_store_temp_size 參數。在此情況下,這兩個設定都會評估為 0,這會關閉功能。在此情況下,您可以針對不同的執行個體大小和未使用執行個體儲存體的執行個體使用相同的參數群組。如果您修改這些參數,請務必重新啟動相關聯的執行個體,以便變更可以生效。

重要

如果您為暫存資料表空間配置空間,則 Amazon RDS 不會自動建立暫存資料表空間。若要了解如何在執行個體儲存體上建立暫存資料表空間,請參閱 在執行個體儲存體上建立暫存資料表空間

上述參數的合併值不得超過 10/10 或 100%。下表說明有效和無效的參數設定。

db_flash_cache_size setting rds.instance_store_temp_size setting 說明

db_flash_cache_size={DBInstanceStore*0/10}

rds.instance_store_temp_size={DBInstanceStore*10/10}

這是所有 Oracle 資料庫版本的有效組態。Amazon RDS 會將 100% 的執行個體儲存體空間配置給暫存資料表空間。此為預設值。

db_flash_cache_size={DBInstanceStore*10/10}

rds.instance_store_temp_size={DBInstanceStore*0/10}

這是僅適用於 Oracle 資料庫企業版的組態。Amazon RDS 會將 100% 的執行個體儲存體空間配置給快閃記憶體快取。

db_flash_cache_size={DBInstanceStore*2/10}

rds.instance_store_temp_size={DBInstanceStore*8/10}

這是僅適用於 Oracle 資料庫企業版的組態。Amazon RDS 會將 20% 的執行個體儲存體空間配置給快閃記憶體快取,而將 80% 的執行個體儲存體空間配置給暫存資料表空間。

db_flash_cache_size={DBInstanceStore*6/10}

rds.instance_store_temp_size={DBInstanceStore*4/10}

這是僅適用於 Oracle 資料庫企業版的組態。Amazon RDS 會將 60% 的執行個體儲存體空間配置給快閃記憶體快取,而將 40% 的執行個體儲存體空間配置給暫存資料表空間。

db_flash_cache_size={DBInstanceStore*2/10}

rds.instance_store_temp_size={DBInstanceStore*4/10}

這是僅適用於 Oracle 資料庫企業版的組態。Amazon RDS 會將 20% 的執行個體儲存體空間配置給快閃記憶體快取,而將 40% 的執行個體儲存體空間配置給暫存資料表空間。

db_flash_cache_size={DBInstanceStore*8/10}

rds.instance_store_temp_size={DBInstanceStore*8/10}

這是無效的組態,因為執行個體儲存體空間的合併百分比超過 100%。在此情況下,Amazon RDS 無法嘗試。

變更資料庫執行個體類型時的考量

如果您變更資料庫執行個體類型,其可能會影響快閃記憶體快取的組態或執行個體儲存體上的暫存資料表空間。請考慮下列修改及其影響:

您可以針對支援執行個體儲存體的資料庫執行個體進行縱向擴展或縮減規模。

下列值會隨著執行個體儲存體的新大小,按比例增加或減少:

  • 快閃記憶體快取的新大小。

  • 配置給位於執行個體儲存體之暫存資料表空間的空間。

例如,db.m5d.4xlarge 執行個體上的設定 db_flash_cache_size={DBInstanceStore*6/10} 會提供約 340 GB 的快閃記憶體快取空間。如果您將執行個體類型縱向擴展至 db.m5d.8xlarge,快閃記憶體快取空間會增加到 約 680 GB。

您可以將不使用執行個體儲存體的資料庫執行個體修改為確實使用執行個體儲存體的執行個體。

如果 db_flash_cache_size 設定為大於 0 的值,則會設定快閃記憶體快取。如果 rds.instance_store_temp_size 設定為大於 0 的值,則會配置執行個體儲存體空間,供暫存資料表空間使用。RDS for Oracle 不會自動將暫存檔移至執行個體儲存體。如需使用所配置空間的相關資訊,請參閱 在執行個體儲存體上建立暫存資料表空間將暫存檔新增至僅供讀取複本上的執行個體儲存體

您可以將使用執行個體儲存體的資料庫執行個體修改為不使用執行個體儲存體的執行個體。

在此情況下,RDS for Oracle 會移除快閃記憶體快取。RDS 會重新建立目前位於 Amazon EBS 磁碟區上執行個體儲存體的暫存檔。新暫存檔的大小上限是 rds.instance_store_temp_size 參數的先前大小。

使用 Oracle 僅供讀取複本上的執行個體儲存體

僅供讀取複本支援執行個體儲存體上的快閃記憶體快取和暫存資料表空間。雖然快閃記憶體快取的運作方式與主要資料庫執行個體相同,但請注意下列暫存資料表空間的差異:

  • 您無法在僅供讀取複本上建立暫存資料表空間。如果您在主要執行個體上建立新的暫存資料表空間,RDS for Oracle 會複寫不含暫存檔的資料表空間資訊。若要新增暫存檔,請使用下列任一技巧:

    • 使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.add_inst_store_tempfile RDS for Oracle 會在僅供讀取複本的執行個體儲存體中建立暫存檔,並將其新增至指定的暫存資料表空間。

    • 執行 ALTER TABLESPACE … ADD TEMPFILE 命令。RDS for Oracle 將暫存檔放置在 Amazon EBS 儲存體上。

    注意

    主要資料庫執行個體和僅供讀取複本上的暫存檔大小和儲存類型可能不同。

  • 您只能在主要資料庫執行個體上管理預設暫存資料表空間設定。RDS for Oracle 會將設定複寫到所有僅供讀取複本。

  • 您只能在主要資料庫執行個體上設定暫存資料表空間群組。RDS for Oracle 會將設定複寫到所有僅供讀取複本。

在執行個體儲存體和 Amazon EBS 上設定暫存資料表空間群組

您可以設定暫存資料表空間群組,在執行個體儲存體和 Amazon EBS 上同時包含暫存資料表空間。當您想要的暫存儲存體超過 rds.instance_store_temp_size 最大設定允許的空間時,此技巧很有用。

當您同時在執行個體儲存體和 Amazon EBS 上設定暫存資料表空間群組時,這兩個表格空間的效能特性明顯不同。Oracle 資料庫會根據內部演算法選擇要為查詢提供服務的資料表空間。因此,類似的查詢可能會在效能方面有所不同。

一般而言,您可以在執行個體儲存體中建立暫存資料表空間,如下所示:

  1. 在執行個體儲存體中建立暫存資料表空間。

  2. 將新的表格空間設定為資料庫預設暫存資料表空間。

如果執行個體儲存體中的資料表空間大小不足,您可以建立額外的暫存儲存體,如下所示:

  1. 將執行個體儲存體中的暫存表格空間指派給暫存資料表空間群組。

  2. 請在 Amazon EBS 中建立新的暫存資料表空間 (如果不存在)。

  3. 將 Amazon EBS 中的暫存資料表空間指派給包含執行個體儲存體資料表空間的相同資料表空間群組。

  4. 將表格空間群組設定為預設暫存資料表空間。

下列範例假設執行個體儲存體中的暫存資料表空間大小不符合您的應用程式要求。此範例會在執行個體儲存體中建立暫存資料表空間 temp_in_inst_store、將其指派給資料表空間群組 temp_group、將名為 temp_in_ebs 的現有 Amazon EBS 資料表空間新增至這個群組,然後將此群組設定為預設暫存資料表空間。

SQL> EXEC rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace('temp_in_inst_store'); PL/SQL procedure successfully completed. SQL> ALTER TABLESPACE temp_in_inst_store TABLESPACE GROUP temp_group; Tablespace altered. SQL> ALTER TABLESPACE temp_in_ebs TABLESPACE GROUP temp_group; Tablespace altered. SQL> EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace('temp_group'); PL/SQL procedure successfully completed. SQL> SELECT * FROM DBA_TABLESPACE_GROUPS; GROUP_NAME TABLESPACE_NAME ------------------------------ ------------------------------ TEMP_GROUP TEMP_IN_EBS TEMP_GROUP TEMP_IN_INST_STORE SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE'; PROPERTY_VALUE -------------- TEMP_GROUP

移除 RDS for Oracle 執行個體儲存體

若要移除執行個體存放區,請修改您的 RDS for Oracle 資料庫執行個體,以使用不支援執行個體儲存體的執行個體類型,例如 db.m5 或 db.r5。