Database In-MemoryのOUT OF MEMORYを監視する(V$INMEMORY_AREA)
2016-06-23
対応バージョン
Oracle Database 12.1.0.2
2016-06-23記事公開
Database In-Memoryのデータ移入処理について、CPUリソースを制御する方法について説明します。(物理ディスクからインメモリ用のメモリ領域にデータ配置することを移入と呼びます)
制御はDatabase リソース・マネージャ(DBRM)を用いて行います。
デフォルトでは移入処理はora$autotaskというコンシューマ・グループに紐づいており、この紐づきを変更することが出来ます。
DBRMでは、コンシューマ・グループごとにCPUリソースの優先度を変更できます。
例えば以下のようにリソースマネージャを構成していた場合に、移入処理(インメモリ化)を優先的に行うために、HIGHRES_GROUPSというコンシューマグループに紐づけるものとします。
コンシューマ・グループ | CPU優先度(Level1) |
---|---|
HIGHRES_GROUPS | 70% |
LOWRES_GROUPS | 20% |
OTHER_GROUPS | 10% |
先に説明した通り最初はora$autotaskに対し紐づいていますが、ora$autotaskに対して設定されていない為、移入処理はOTHER_GROUPSへ割り当てられます。
以下の構文にて紐づきの変更が可能です。OTHER_GROUPSからHIGHRES_GROUPSへ変更します。(マルチテナントの場合はPDBが対象となります。)
1 2 3 4 5 6 7 8 9 10 11 |
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-03
81 DBMS_INMEMORY
参考情報(参考元ホワイト・ペーパー) Oracle Database In-Memory Oracleホワイト・ペーパー | 2015年7月
Oracle Database In-Memory Oracleホワイト・ペーパー
Oracle Database In-Memoryの監視と管理
IM列ストア移入のCPU消費量の管理