1.2.9 インメモリー列形式のサポート

Oracle Exadata環境では、データをインメモリー列形式でフラッシュ・キャッシュに格納することでパフォーマンスが向上する場合は、自動的にそのようになります。

Oracle Exadataでは、必要な圧縮列のみへのアクセス、SIMDベクター処理、ストレージ索引などのすべてのインメモリー最適化がサポートされます。

INMEMORY_SIZEデータベース初期化パラメータをゼロ以外の値に設定すると(Oracle Database In-Memoryオプションが必要)、スマート・スキャンを使用してアクセスされたオブジェクトはフラッシュ・キャッシュに挿入され、インメモリー列形式に自動的に変換されます。データは最初は列キャッシュ形式に変換されますが、この形式はOracle Database In-Memoryの列形式とは異なります。データは、バックグラウンドでOracle Database In-Memory列形式に書き換えられます。結果的に、データに対するその後のすべてのアクセスで、そのデータがフラッシュ・キャッシュから取得されるときにインメモリー最適化のすべてからメリットを得られます。



インメモリー表への書込みでは、その表の列キャッシュ全体は無効になりません。これにより無効になるのは、ブロックが存在するディスク・リージョンの列キャッシュ単位のみです。表の更新後の後続のスキャンでは、表の大部分はまだ列キャッシュ内にあります。スキャンでは列キャッシュを引き続き使用できます(書込みが行われた単位は除く)。このような単位の場合、問合せでは元のブロック・バージョンを使用してデータが取得されます。十分な数のスキャンの後、無効化された列キャッシュ単位は列形式で自動的に再移入されます。

また、インメモリー列形式を使用してどのオブジェクトをフラッシュに移入しないようにするか、およびどのタイプの圧縮を使用するかの制御に役立つ、新しいセグメント・レベルの属性CELLMEMORYも導入されました。INMEMORY属性と同様に、CELLMEMORY属性に対するサブラベルとして異なる圧縮レベルを指定できます。ただし、すべてのINMEMORY圧縮レベルが使用できるわけではありません。MEMCOMPRESS FOR QUERY LOWおよびMEMCOMPRESS FOR CAPACITY LOW (デフォルト)のみです。CELLMEMORY属性は、次のようなSQLコマンドを使用して指定します。

ALTER TABLE trades CELLMEMORY MEMCOMPRESS FOR QUERY LOW

Oracle Database In-Memoryで使用可能なPRIORTY副句は、Oracle Exadataでは使用できません。これは、Exadataストレージ・サーバーのフラッシュ・キャッシュを移入するプロセスがOracle Databaseサーバーのインメモリー列ストアへのDRAMの移入と異なるためです。