テーブルの行が追加、削除、更新されても、カラム型エンジンはカラムストア内のデータをすぐには更新しません。代わりに、カラムストア内の影響を受けるコンテンツを無効としてマークし、カラムストアの列指向データと、行キャッシュとデータベース ストレージの行指向データの両方を使用して、クエリが計画および実行されます。
時間の経過とともに、無効なデータブロックが増えるにつれて、カラム型エンジンによるクエリのパフォーマンスは低下します。クエリのパフォーマンスを回復するため、カラム型データの更新が必要なレベルにまで低下します。この更新しきい値に達すると、カラム型エンジンはバックグラウンド ジョブを使用して、カラムストア内の無効なデータを更新します。デフォルトでは、カラム型エンジンは 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
)。