対応バージョン

Oracle Database 12.1.0.2

更新履歴

日付更新概要
2016/06/23記事公開

Database In-Memoryのデータ移入処理について、CPUリソースを制御する方法について説明します。(物理ディスクからインメモリ用のメモリ領域にデータ配置することを移入と呼びます)

制御の方法

制御はDatabase リソース・マネージャ(DBRM)を用いて行います。
デフォルトでは移入処理はora$autotaskというコンシューマ・グループに紐づいており、この紐づきを変更することが出来ます。

DBRMでは、コンシューマ・グループごとにCPUリソースの優先度を変更できます。
例えば以下のようにリソースマネージャを構成していた場合に、移入処理(インメモリ化)を優先的に行うために、HIGHRES_GROUPSというコンシューマグループに紐づけるものとします。

コンシューマ・グループCPU優先度(Level1)
HIGHRES\_GROUPS70%
LOWRES\_GROUPS20%
OTHER\_GROUPS10%

先に説明した通り最初はora$autotaskに対し紐づいていますが、ora$autotaskに対して設定されていない為、移入処理はOTHER_GROUPSへ割り当てられます。

以下の構文にて紐づきの変更が可能です。OTHER_GROUPSからHIGHRES_GROUPSへ変更します。(マルチテナントの場合はPDBが対象となります。)

SQL> BEGIN
  2    dbms_resource_manager.create_pending_area();
  3    dbms_resource_manager.set_consumer_group_mapping(
  4        attribute => 'ORACLE_FUNCTION'
  5      , value => 'INMEMORY'
  6      , consumer_group => 'HIGHRES_GROUPS'
  7    );
  8    dbms_resource_manager.validate_pending_area();
  9    dbms_resource_manager.submit_pending_area();
 10  END;
 11  /

DBMS_INMEMORYを使用したオンデマンド処理(ユーザ要求)による移入は上記設定の対象とならない為、気を付けておく必要があります。

参考情報(参考元)
https://docs.oracle.com/cd/E57425_01/121/ARPLS/d_inmemory.htm
Oracle Database PL/SQLパッケージおよびタイプ・リファレンス
12cリリース1 (12.1)
B71281-05
81 DBMS_INMEMORY

参考情報(参考元ホワイト・ペーパー)
Oracle Database In-Memory Oracleホワイト・ペーパー | 2015年7月
Oracle Database In-Memory Oracleホワイト・ペーパー
Oracle Database In-Memoryの監視と管理
IM列ストア移入のCPU消費量の管理