sql >> データベース >  >> RDS >> Oracle

INMEMORYパーティションからデータを収集する方法は?

    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;
    

    これらのテーブルは、次の場合にメモリに格納されます。

    1. IMCOプロセスはこれらのテーブルを取得し、メモリ内領域にロードします(優先度の高いものから低いものの順に:tab2、tab3、tab1)
    2. いずれかのテーブルで選択クエリを実行する場合(例: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;
    

    だから、あなたの質問に答えるために:

    1. v$im_segmentsをクエリして、テーブルがメモリ内に読み込まれていることを確認します
    2. テーブルがロードされていない場合は、テーブルに対してselectクエリを実行して、テーブルをメモリ内領域にロードします。
    3. テーブルの選択クエリのクエリプランを取得します。プランの一部としてINMEMORYが表示されます

    このホワイトペーパーを確認してください。 詳細については。




    1. PostgreSQLが大文字のテーブル名を好まないのはなぜですか?

    2. Windows732ビットへのOracle11gRelease 2EnterpriseEditionのインストール

    3. PHP / mysql-変数をクラスから個別のindex.phpに渡す方法は?プロフィールページ?

    4. mysqlの1つのトリガー宣言で複数のイベントを定義できますか?