このページでは、コンテナ内の AlloyDB Omni のカラムエンジンの列ストアでデータの鮮度を維持する方法について説明します。
テーブルの行が追加、削除、更新されても、列エンジンは列ストア内のデータはすぐに更新しません。代わりに、列ストア内の影響を受けるコンテンツが無効としてマークされ、列ストアの列指向データと、行キャッシュとデータベース ストレージの行指向データの両方を使用してクエリが計画および実行されます。
時間の経過とともに、無効なデータブロックが増えるにつれて、カラム型エンジンによるクエリのパフォーマンスの向上は減少し、クエリのパフォーマンスを回復するためにカラム型データを更新する必要があるレベルまで低下します。この更新しきい値に達すると、列形式エンジンはバックグラウンド ジョブを使用して、列ストア内の無効なデータを更新します。デフォルトでは、列エンジンは 50 の更新しきい値を使用します。これは、列ストア内の特定のコンテンツの 50% が無効になったときに、そのコンテンツが更新対象としてマークされることを意味します。この更新しきい値を変更して、自動更新のオーバーヘッドを調整し、アプリケーション ワークロードの継続的なクエリ パフォーマンスを向上させることができます。
また、列ストアでテーブルのデータを手動で更新することもできます。通常、テーブルの変更を変更後できるだけ早く列ストアに反映する場合は、手動で更新を行います。
カラム型エンジンの更新しきい値を変更する
google_columnar_engine.refresh_threshold_percentage
データベース フラグの値を編集して、カラム型エンジンの更新しきい値を変更します。
ALTER SYSTEM SET google_columnar_engine.refresh_threshold_percentage=THRESHOLD;
THRESHOLD
: 1
~100
の整数値。この値は、コンテンツが更新対象としてマークされるために無効にする必要があるコンテンツ内のデータブロックの割合を指定します。
カラムストア内のテーブルのデータを手動で更新する
google_columnar_engine_refresh
SQL 関数を実行して、インメモリ列ストア内のテーブルのデータを手動で更新します。
SELECT google_columnar_engine_refresh(TABLE_NAME);
TABLE_NAME
: テーブルまたはマテリアライズド ビューの名前を含む文字列。テーブルまたはビューが public
以外のスキーマにある場合は、SCHEMA_NAME.TABLE_NAME
の形式でスキーマ名を指定します(例: myschema.mytable
)。