Oracle Database In-Memoryガイドのこのリリースでの変更点
ここでは、Oracle Database 19c、Oracle Database 18cおよびOracle Database 12cのIn-Memory機能をまとめます。
この項では、次の項目について説明します。
Oracle Databaseリリース19c, バージョン19.20の変更点
Oracle Database 19cバージョン19.20用の『Oracle Database In-Memoryガイド』には、新しいDBMS_INMEMORY_ADVISE
PL/SQLパッケージが含まれています。
DBMS_INMEMORY_ADVISE
には、データベース・ワークロードに対してデータベース・インメモリーの効果があるかどうかを迅速に評価するために実行できる、IS_INMEMORY_ELIGIBLE
プロシージャが含まれています。
Oracle Databaseリリース19c, バージョン19.8の変更点
Oracle Database 19c, バージョン19.8向けのOracle Database In-Memoryガイドには、次のような変更点があります。
新機能
今回のリリースの主な新機能は次のとおりです。
-
Database In-Memoryベース・レベル
Oracle Database release 19c, バージョン19.8以降、
INMEMORY_FORCE
初期化パラメータをBASE_LEVEL
に設定することで、Database In-Memoryベース・レベルを有効にできます。ベース・レベルでは、Oracle Database In-Memoryオプションを購入することなくインメモリー機能を試すことができます。ベース・レベルが有効である場合、IM列ストアのサイズは、Oracle RACデータベースの各データベース・インスタンスおよびCDBまたは非CDBで16 GBに制限されます。また、すべてのオブジェクトおよび列の圧縮レベルが自動的かつ透過的に
QUERY LOW
に設定され、自動インメモリーが無効になります。 -
Oracle Database release 19c, バージョン19.8以降、
INMEMORY_FORCE=CELLMEMORY_LEVEL
およびINMEMORY_SIZE=0
を設定することで、IM列ストアを有効にしなくてもCellMemory機能を使用できます。これらの設定では、IM列ストアは有効にならず、問合せでCellMemoryを使用してオブジェクトをスキャンできます。以前のリリースのOracle Databaseでは、CellMemory機能を使用するために、IM列ストアを使用する予定がない場合でも、有効にする必要がありました。これにより、何の利点もないIM列ストアの有効化によるオーバーヘッドが発生しました。
関連項目:
-
データベースに対するIM列ストアの有効化を参照してください。
-
様々なエディションとサービスでサポートされる機能の詳細は、『Oracle Databaseライセンス情報ユーザー・マニュアル』を参照
Oracle Databaseリリース19c, バージョン19.1の変更点
Oracle Databaseリリース19c, バージョン19.1向けOracle Database In-Memoryガイドには、次のような変更点があります。
新機能
今回のリリースの主な新機能は次のとおりです。
-
Database In-Memoryベース・レベル
Database In-Memoryベース・レベルを有効にするには、
INMEMORY_FORCE
初期化パラメータにBASE_LEVEL
を設定します。ベース・レベルでは、Oracle Database In-Memoryオプションを購入することなくインメモリー機能を試すことができます。ベース・レベルが有効である場合、IM列ストアのサイズは、Oracle RACデータベースの各データベース・インスタンスおよびCDBまたは非CDBで16 GBに制限されます。また、すべてのオブジェクトおよび列の圧縮レベルが自動的かつ透過的に
QUERY LOW
に設定され、自動インメモリーが無効になります。データベースに対するIM列ストアの有効化およびOracle Databaseライセンス情報ユーザー・マニュアルを参照してください。
-
Database In-Memoryの移入待機
DBMS_INMEMORY_ADMIN.POPULATE_WAIT
関数は、優先度が指定された優先度以上のすべてのINMEMORY
オブジェクトの移入を開始し、移入のステータス値を返します。ユーザー指定の間隔は、値がコール元に戻されるまで関数が待機する最大時間を指定します。「インメモリー・オブジェクトの初期移入の強制」を参照してください。
-
インメモリー外部表のビッグ・データおよびパフォーマンスの向上
このリリースでは、インメモリー外部表機能に対する管理性とパフォーマンスの改善が導入されています。
-
ORACLE_HIVE
ドライバとORACLE_BIGDATA
ドライバがサポートされています。 -
パラレル問合せがサポートされています。
-
全表スキャンでは、インメモリー外部表が移入されます。以前のリリースでは、
DBMS_INMEMORY
のPOPULATE
またはREPOPULATE
プロシージャを使用して移入する必要がありました。 -
In-Memoryのバックグラウンド・プロセス(フォアグラウンド・プロセスではない)で、IMセグメントを削除するようになりました。
「インメモリー外部表」を参照してください。
-
-
ハイブリッド・パーティション表
パーティションは、Oracle Databaseセグメント内と、外部ファイルおよびソース内の両方に存在できます。この機能は、表の大部分が外部パーティションに存在できるBig Data SQLのパーティション化を大幅に拡張します。ハイブリッド・パーティション表の内部パーティションのみが
INMEMORY
属性を継承します。「インメモリー表」を参照してください。
-
Database In-Memoryに対するOracle Database Resource Managerの自動有効化
INMEMORY_SIZE
が0
より大きい場合は、リソース・マネージャが自動的に有効になります。「IM動的スキャンのインタフェース」を参照してください。
-
Oracle Data Guard Multi-Instance Redo ApplyによるIM列ストアのサポート
初期化パラメータ
ENABLE_IMC_WITH_MIRA
をTRUE
に設定すると、IM列ストアとData Guard Multi-Instance Redo ApplyがActive Data Guardスタンバイ・データベースで同時に有効になります。デフォルトでは、ENABLE_IMC_WITH_MIRA
はFALSE
です。ENABLE_IMC_WITH_MIRA
についてさらに学習するには、『Oracle Databaseリファレンス』参照してください。
関連項目:
様々なエディションとサービスでサポートされる機能の詳細は、『Oracle Databaseライセンス情報ユーザー・マニュアル』を参照
Oracle Databaseリリース18c, バージョン18.1の変更点
Oracle Databaseリリース18c, バージョン18.1向けOracle Database In-Memoryガイドには、次のような変更点があります。
新機能
今回のリリースの主な新機能は次のとおりです。
-
自動インメモリー
この機能は、セグメントおよび列の使用状況の統計を使用して、IM列ストアの内容を自動的に管理します。IM列ストアがいっぱいであるために移入ジョブが失敗した場合、自動インメモリーは非アクティブなセグメントを除去して、アクティブなセグメントのためのスペースを作成します。
「自動インメモリーの構成」を参照してください。
-
In-Memory動的スキャン
IM動的スキャンは、軽量プロセス・スレッドを使用して表スキャンを自動的かつ透過的にパラレル化します。Oracle Resource Managerは、CPUリソースがアイドル状態であり問合せを高速化するために利用できることを認識したときに、これらのスレッドを割り当てます。
「In-Memory動的スキャン」を参照してください。
-
IM式ウィンドウの取得
任意の長さの式取得ウィンドウを定義できます。これにより、このウィンドウ内で発生する式のみがインメモリーのマテリアライズ用に考慮されます。このメカニズムは、ワークロード全体で代表的な小さい間隔がわかっている場合に特に便利ですたとえば、取引時間帯の間に証券会社が一連の式を収集し、IM列ストアでそれらをマテリアライズして、ワークロード全体の将来の問合せ処理を高速化できます。
「式の取得間隔」を参照してください。
-
外部表のインメモリー・サポート
外部表をIM列ストアに移入できます。この機能は、内部データと外部データを組み合せた分析問合せに役立ちます。
「インメモリー外部表」および「DBMS_INMEMORY.POPULATEを使用したインメモリー外部表への移入: 例」を参照してください。
-
インメモリー最適化算術
QUERY LOW
で表を圧縮する場合、NUMBER
列は、ハードウェアでのネイティブ計算が有効になる最適化された形式を使用してエンコードされます。最適化されたこの形式を使用する集計および算術演算のSIMDベクター処理により、パフォーマンスが大幅に向上します。この機能は、INMEMORY_OPTIMIZED_ARITHMETIC
をENABLE
に設定すると有効になります。「インメモリー算術の最適化」を参照してください。
-
ラージ・オブジェクト(LOB)のパフォーマンスの向上
以前のリリースでは、LOBとLOBポインタがIM列ストアに移入されましたが、データベースはバッファ・キャッシュを使用して問合せを満たしました。このリリースでは、範囲述語をスカラー列に適用するインメモリー問合せ、またはSQL演算子をLOB列に適用するインメモリー問合せで、SIMDベクター処理による利益が得られます。
IM列ストアは、IMCU内の4KB未満のLOBであるインラインLOBに対して連続した記憶域を提供します。アウトラインLOBの場合、IM列ストアは40バイトのLOBロケータのみを格納します。前述のルールには、例外が1つあります。IMEUは、LOBデータ型として定義されたJSON列に対して最大32KBの連続した記憶域を割り当てることができます。IMEUは、これらの列をOSON (バイナリJSON)形式で格納します。
「CPUアーキテクチャ: SIMDベクター処理」を参照してください。
-
1つの列にあるインメモリー結合グループ
次の構文を使用して、単一の列に自己結合の結合グループを作成できます。
CREATE INMEMORY JOIN GROUP jg_name(table_name(column_name))
「結合グループによる結合の最適化」を参照してください。
Oracle Database 12cリリース2 (12.2.0.1)での変更点
Oracle Database 12cリリース2 (12.2.0.1)向けOracle Database In-Memoryガイドには、次のような変更点があります。
新機能
今回のリリースの主な新機能は次のとおりです。
-
インメモリー列ストア(IM列ストア)の動的サイズ変更
データベースを再度開くことなく、インメモリー領域のサイズを動的に拡大できるようになりました。
「IM列ストアのサイズの動的な増加」を参照してください。
-
インメモリー式(IM式)
Oracle Databaseにより、IM列ストアへの移入の候補となる、頻繁に使用される(ホットな)式が自動的に特定されます。式の候補としては、
(monthly_sales*12)/52
が考えられます。IM式は、計算集約的な式を使用し、大規模なデータ・セットにアクセスする分析型問合せのパフォーマンスを大幅に向上させます。「インメモリー式による問合せの最適化」を参照してください。
-
インメモリー仮想列(IM仮想列)
IM仮想列により、IM列ストアで、表内の一部またはすべての仮想列をマテリアライズできます。
「インメモリー表に対する列の有効化および無効化」を参照してください。
-
IMファスト・スタート
IMファスト・スタートでは、IMCUをディスクに直接格納することで、IM列ストアへのデータベース・オブジェクトの移入が最適化されます。
「IM列ストアのIMファスト・スタートの管理」を参照してください。
-
サービスに対するオブジェクトレベルのサポート
個々のオブジェクトの場合、
INMEMORY ... DISTRIBUTE
句には、このサービスを実行できるデータベース・インスタンスへの移入を制限するFOR SERVICE
副句があります。たとえば、INMEMORY
オブジェクトをインスタンス1のみ、インスタンス2のみ、または両方のインスタンス内のIM列ストアに移入するよう構成できます。「オブジェクトレベルのサービス制御」を参照してください。
-
スタンバイ・データベース上のIM列ストア
Oracle Active Data Guardスタンバイ・データベース上でIM列ストアを有効にできます。アプリケーションで使用できるインメモリー列ストアのサイズを効率的に2倍にして、プライマリおよびスタンバイ・データベース上で、インメモリー列ストア内に完全に異なるデータのセットを移入できます。
「Oracle Active Data GuardでのIM列ストアのデプロイ」を参照してください。
-
IM列ストアでのADOのサポート
自動データ最適化(ADO)ポリシーを使用して、表、パーティションまたはサブパーティションなどのオブジェクトを、ヒート・マップ統計に基づいてIM列ストアから除去できます。正常なポリシー完了により、指定されたオブジェクトに対して
NO INMEMORY
が設定されます。「IM列ストアに対するADOの有効化」を参照してください。
-
結合グループ
結合グループは、効果的に結合できる2つの列をリストするユーザー作成オブジェクトです。特定の問合せで、結合グループにより、データベースで列値を解凍およびハッシュするパフォーマンス上のオーバーヘッドを排除できます。結合グループには、IM列ストアが必要となります。
「結合グループによる結合の最適化」を参照してください。