IMCO(Inmemory Coordinator)プロセスは、2分ごと そして、人口タスクを完了する必要があるかどうかを確認します。したがって、メモリ内でテーブルを有効にした直後にテーブルにクエリを実行しても、クエリがメモリ内から提供されるとは限りません。
オブジェクトは、データベースが開かれた直後、またはテーブルが初めてスキャン(クエリ)された後、優先リストのIM列ストアに入力されます。
たとえば、インメモリに対してテーブルtab1、tab2、tab3を有効にすると、次のようになります。
alter table tab1 inmemory priority medium;
alter table tab3 inmemory priority high;
alter table tab2 inmemory priority critical;
これらのテーブルは、次の場合にメモリに格納されます。
- IMCOプロセスはこれらのテーブルを取得し、メモリ内領域にロードします(優先度の高いものから低いものの順に:tab2、tab3、tab1)
- いずれかのテーブルで選択クエリを実行する場合(例:
select * from tab1
)IMCOプロセスが開始される前(2分ごと)
テーブル/パーティションが完全にメモリ内にロードされているかどうかを知るには、v$im_segments
にクエリを実行します。 次のように表示します:
select owner, segment_name, partition_name, segment_type, bytes,
bytes_not_populated, populate_status from v$im_segments;
だから、あなたの質問に答えるために:
-
v$im_segments
をクエリして、テーブルがメモリ内に読み込まれていることを確認します - テーブルがロードされていない場合は、テーブルに対してselectクエリを実行して、テーブルをメモリ内領域にロードします。
- テーブルの選択クエリのクエリプランを取得します。プランの一部としてINMEMORYが表示されます
この