インメモリ列ストア データの鮮度を維持する

このページでは、コンテナ内の AlloyDB Omni のカラムエンジンの列ストアでデータの鮮度を維持する方法について説明します。

テーブルの行が追加、削除、更新されても、列エンジンは列ストア内のデータはすぐに更新しません。代わりに、列ストア内の影響を受けるコンテンツが無効としてマークされ、列ストアの列指向データと、行キャッシュとデータベース ストレージの行指向データの両方を使用してクエリが計画および実行されます。

時間の経過とともに、無効なデータブロックが増えるにつれて、カラム型エンジンによるクエリのパフォーマンスの向上は減少し、クエリのパフォーマンスを回復するためにカラム型データを更新する必要があるレベルまで低下します。この更新しきい値に達すると、列形式エンジンはバックグラウンド ジョブを使用して、列ストア内の無効なデータを更新します。デフォルトでは、列エンジンは 50 の更新しきい値を使用します。これは、列ストア内の特定のコンテンツの 50% が無効になったときに、そのコンテンツが更新対象としてマークされることを意味します。この更新しきい値を変更して、自動更新のオーバーヘッドを調整し、アプリケーション ワークロードの継続的なクエリ パフォーマンスを向上させることができます。

また、列ストアでテーブルのデータを手動で更新することもできます。通常、テーブルの変更を変更後できるだけ早く列ストアに反映する場合は、手動で更新を行います。

カラム型エンジンの更新しきい値を変更する

google_columnar_engine.refresh_threshold_percentage データベース フラグの値を編集して、カラム型エンジンの更新しきい値を変更します。

    ALTER SYSTEM SET google_columnar_engine.refresh_threshold_percentage=THRESHOLD;

THRESHOLD: 1100 の整数値。この値は、コンテンツが更新対象としてマークされるために無効にする必要があるコンテンツ内のデータブロックの割合を指定します。

カラムストア内のテーブルのデータを手動で更新する

google_columnar_engine_refresh SQL 関数を実行して、インメモリ列ストア内のテーブルのデータを手動で更新します。

SELECT google_columnar_engine_refresh(TABLE_NAME);

TABLE_NAME: テーブルまたはマテリアライズド ビューの名前を含む文字列。テーブルまたはビューが public 以外のスキーマにある場合は、SCHEMA_NAME.TABLE_NAME の形式でスキーマ名を指定します(例: myschema.mytable)。