3 IM列ストアの有効化およびサイズ設定
IM列ストアを有効化または無効化するには、INMEMORY_SIZE
初期化パラメータの値を指定します。
この章のトピックは、次のとおりです:
3.1 IM列ストアの有効化の概要
デフォルトでは、INMEMORY_SIZE
初期化パラメータは0
に設定されており、これは、IM列ストアが無効になっていることを意味します。
IM列ストアを有効にするには、データベース・インスタンスを起動する前に、初期化パラメータINMEMORY_SIZE
をゼロ以外の値に設定します。ALTER SYSTEM
文を使用することで、INMEMORY_SIZE
サイズ設定を動的に増加させることができます。
デフォルトでは、表、表領域またはマテリアライズド・ビューに対してCREATE
またはALTER
文のINMEMORY
句を使用して、IM列ストアに移入するための候補を指定する必要があります。
関連項目:
-
INMEMORY_SIZE
初期化パラメータについてさらに学習するには、『Oracle Databaseリファレンス』を参照 -
INMEMORY
句の詳細は、『Oracle Database SQL言語リファレンス』を参照
3.2 IM列ストアの必須サイズの推定
要件に基づいてIM列ストアのサイズを推定してから、それらの要件に合わせてIM列ストアのサイズを変更します。圧縮の適用により、メモリー・サイズを削減できます。
IM列ストアで必要なメモリー量は、それに格納するデータベース・オブジェクト、および各オブジェクトに適用する圧縮方法によって異なります。INMEMORY
オブジェクトに対する圧縮方法を選択する際には、使用可能なメモリー量に対するパフォーマンス利益のバランスを取ります。
-
メモリー・サイズを最大限に削減するには、
FOR CAPACITY HIGH
またはFOR CAPACITY LOW
圧縮方法を選択します。ただし、これらのオプションでは、データを解凍するための問合せ実行中にさらにCPUが必要となります。 -
最善の問合せパフォーマンスを得るには、
FOR QUERY HIGH
またはFOR QUERY LOW
圧縮方法を選択します。ただし、これらのオプションでは、より多くのメモリーが消費されます。
IM列ストアのサイズ設定時には、次のガイドラインを考慮してください。
-
IM列ストアに移入するすべてのオブジェクトについて、消費するメモリー量を推定します。
Oracle Compression Advisorでは
MEMCOMPRESS
句を使用してユーザーが実感できる圧縮率を推定します。アドバイザはDBMS_COMPRESSION
インタフェースを使用します。 -
個々の容量を加算します。
ノート:
移入後は、
V$IM_SEGMENTS
によって、ディスク上のそれらのオブジェクトの実サイズ、およびIM列ストアでのそれらのサイズが示されます。この情報を使用して、移入したオブジェクトの圧縮率を計算できます。ただし、オブジェクトがディスク上で圧縮された場合、この問合せでは正しい圧縮率は示されません。 -
In-Memory最適化算術を構成し、インメモリー表が
FOR QUERY LOW
圧縮を使用する場合は、NUMBER
列の二重記憶を考慮して約15%を追加します。 -
データベース・オブジェクトの拡大を考慮するため、およびDML操作後に行の最新版を格納するために、領域を追加します。
動的サイズ変更の最小容量は128 MBです。
関連項目:
-
圧縮アドバイザを使用した圧縮率の推定方法を学習するには、『Oracle Database管理者ガイド』を参照
-
V$IM_SEGMENTS
について学習するには、『Oracle Databaseリファレンス』を参照
3.3 データベースに対するIM列ストアの有効化
IM列ストアに表またはマテリアライズド・ビューを移入する前に、データベースのIM列ストアを有効にする必要があります。
前提条件
この作業では、次のことを想定しています。
-
データベースはオープンしています。
-
COMPATIBLE
初期化パラメータが12.1.0
以上に設定されています。 -
INMEMORY_SIZE
初期化パラメータが0
(デフォルト)に設定されています。
IM列ストアを有効にするには:
-
SQL*PlusまたはSQL Developerで、管理者権限を持つユーザーとしてデータベースにログインします。
-
INMEMORY_SIZE
初期化パラメータをゼロ以外の値に設定します。最小設定は、
100M
です。ALTER SYSTEM
文を使用してサーバー・パラメータ・ファイル(SPFILE)でこの初期化パラメータを設定する場合、SCOPE=SPFILE
を指定する必要があります。たとえば、次の文では、インメモリー領域サイズを10 GBに設定します。
ALTER SYSTEM SET INMEMORY_SIZE = 10G SCOPE=SPFILE;
-
データベースを停止してから再度開きます。
データベースを再度開いてSGA内のIM列ストアを初期化する必要があります。
-
必要な場合は、IM列ストアに現在割り当てられているメモリーの量を確認します。
SHOW PARAMETER INMEMORY_SIZE
ノート:
IM列ストアを有効にした後は、データベースを再度開くことなく、そのサイズを動的に増加できます。
例3-1 IM列ストアの有効化
INMEMORY_SIZE
初期化パラメータが0
に設定されていることが前提です。次のSQL*Plusの例では、INMEMORY_SIZE
を10 GBに設定し、その変更内容が有効になるよう、データベース・インスタンスを停止してからデータベースを再度開きます。
SQL> SHOW PARAMETER INMEMORY_SIZE
NAME TYPE VALUE
------------------------------------ ----------- -----
inmemory_size big integer 0
SQL> ALTER SYSTEM SET INMEMORY_SIZE=10G SCOPE=SPFILE;
System altered.
SQL> SHUTDOWN IMMEDIATE
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
ORACLE instance started.
Total System Global Area 11525947392 bytes
Fixed Size 8213456 bytes
Variable Size 754977840 bytes
Database Buffers 16777216 bytes
Redo Buffers 8560640 bytes
In-Memory Area 10737418240 bytes
Database mounted.
Database opened.
SQL> SHOW PARAMETER INMEMORY_SIZE
NAME TYPE VALUE
------------------------------------ ----------- -----
inmemory_size big integer 10G
関連項目:
-
データベースの互換性レベルの設定の詳細は、『Oracle Databaseアップグレード・ガイド』を参照
-
INMEMORY_SIZE
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照
3.4 IM列ストアのサイズの動的な増加
IM列ストアにより多くのメモリーが必要な場合は、そのサイズを動的に増加できます。
IM列ストアのサイズを動的に減少することはできません。INMEMORY_SIZE
を現在の設定よりも小さい値に設定する場合は、ALTER SYSTEM
文にSCOPE=SPFILE
を指定する必要があります。SCOPE=SPFILE
を指定してこのパラメータを設定した場合は、変更を有効にするためにデータベースを再起動する必要があります。
前提条件
IM列ストアのサイズを動的に増加させるには、次の前提条件を満たしている必要があります。
-
列ストアが有効になっている必要があります。
-
互換性レベルが
12.2.0
以上である必要があります。 -
データベース・インスタンスをSPFILEで起動する必要があります。
-
IM列ストアの新しいサイズが、現在の
INMEMORY_SIZE
設定よりも128 MB以上大きい必要があります。
関連項目:
-
INMEMORY_SIZE
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照
3.5 IM列ストアの無効化
INMEMORY_SIZE
初期化パラメータをゼロに設定してからデータベースを再度開くことで、IM列ストアを無効にできます。
前提
この作業では、開いているデータベースでIM列ストアが有効になっていることを想定しています。
IM列ストアを無効にするには:
-
サーバー・パラメータ・ファイル(SPFILE)で
INMEMORY_SIZE
初期化パラメータを0
に設定します。 -
データベースを停止します。
-
データベース・インスタンスを起動してから、データベースを開きます。
関連項目:
INMEMORY_SIZE
初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。