このページでは、列を手動で追加および削除して、カラム型エンジンのカラムストアのコンテンツを管理する方法について説明します。
ワークロードに基づいて、カラム型ストアに列を手動で追加することや、テーブルまたはマテリアライズド ビューの一部またはすべての列をカラム型ストアから削除できます。クエリ評価では、保存されているカラム形式のデータが自動的に使用され、クエリに回答します。
カラムストアに追加するテーブル、マテリアライズド ビュー、列を選択する場合は、カラムストアのサイズとワークロードの形状の両方を考慮してください。選択に適した候補としては、頻繁にスキャンされる大規模なテーブルやビューがあります。これらのテーブルまたはビュー内で、OLAP ワークロードで使用されている大規模で一意でないインデックスを特定します。これらのインデックスの列をカラムストアに追加し、インデックスを削除することで、プライマリ インスタンスでのメンテナンスに関連するパフォーマンス コストを排除できます。
次のいずれかの方法で、カラム型エンジンのカラムストアのコンテンツを管理します。
テーブル、列、マテリアライズド ビューをカラムストアに追加する際に使用できるデータ型とデータソースについては、カラムストアに追加できるデータをご覧ください。
データベース フラグを更新してカラムストアのコンテンツを管理する
google_columnar_engine.relations
データベース フラグを更新することで、カラムストアのコンテンツを手動で管理できます。このフラグには、カラムストアのすべてのデータソースを表す単一の値があります。再起動中、このフラグで指定された列がカラムストアに自動的に入力されます。
このフラグは、自動的なカラム化と組み合わせて使用できます。google_columnar_engine.relations
フラグで指定した列を入力した後に、カラム型エンジンで使用可能なメモリがある場合、自動的なカラム化により、必要に応じてカラムストアに列が追加されます。
フラグを使用して列を追加する
カラムストアに列を追加するには、インスタンスの google_columnar_engine.relations
フラグを定義します。値は、カンマ区切りのアイテムリストに設定します。各アイテムには、特定のテーブルから含める列のリストを指定します。形式は次のとおりです。
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME(COLUMN_LIST)
次のように置き換えます。
DATABASE_NAME: カラムストアに追加する列を含むデータベース。
SCHEMA_NAME: カラムストアに追加するテーブルまたはマテリアライズド ビューを識別するスキーマ。例:
public
TABLE_NAME: カラムストアに追加する列を含むテーブルまたはマテリアライズド ビュー。
COLUMN_LIST: カラムストアに追加するカラムのカンマ区切りリスト。
1 つのテーブルまたは 1 つのマテリアライズド ビューのすべての列を追加するには、列リストを省略します。
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME
ALTER SYSTEM SET google_columnar_engine.relations='DATABASE_NAME.SCHEMA_NAME.TABLE_NAME(COLUMN_1,COLUMN_2)';
フラグを使用して列を削除する
カラムストアから列を削除するには、フラグを使用して列を追加するで説明されている google_columnar_engine.relations
フラグに新しい値を設定し、削除する列を除外します。
カラムストアからすべての列を削除するには、インスタンスから google_columnar_engine.relations
フラグの設定を解除します。
インスタンスにデータベース フラグを設定する方法については、AlloyDB Omni データベース パラメータを構成するをご覧ください。
SQL 関数を使用してカラムストアのコンテンツを管理する
カラムストアのコンテンツは、SQL 関数を使用して手動で管理できます。
SQL 関数を使用して列を追加する
google_columnar_engine_add
SQL 関数を実行して、カラムストアで列を追加します。
この方法では、指定した列がカラムストアに追加され、接続されたノード内の列のみが管理されます。インスタンスの再起動後、新しい列はストア内に保持されません。
この方法では、google_columnar_engine.relations
データベース フラグは変更されません。自動的なカラム化では、この SQL 関数によって追加された列は考慮されません。
psql クライアント
SELECT google_columnar_engine_add( relation => 'TABLE_NAME', columns => 'COLUMN_LIST' );
-
次のように置き換えます。
- TABLE_NAME: テーブルまたはマテリアライズド ビューの名前を含む文字列。テーブルまたはビューが
public
以外のスキーマにある場合は、スキーマ名、ドット、テーブルまたはビューの名前を指定します(例:'myschema.mytable'
)。 - COLUMN_LIST: 追加する列の名前をカンマ区切りで指定した文字列(大文字と小文字が区別されます)。テーブルまたはマテリアライズド ビューのすべての列をカラム型ストアに追加する場合は、このパラメータを省略します。
SQL 関数を使用して列を削除する
次のように google_columnar_engine_drop
SQL 関数を実行します。
psql クライアント
SELECT google_columnar_engine_drop( relation => 'TABLE_NAME', columns => 'COLUMN_LIST' );
- TABLE_NAME: テーブルまたはマテリアライズド ビューの名前を含む文字列。テーブルまたはビューが
public
以外のスキーマにある場合は、スキーマ名、ドット、テーブルまたはビューの名前を指定します(例:'myschema.mytable'
)。 - COLUMN_LIST: 追加する列の名前をカンマ区切りで指定した文字列(大文字と小文字が区別されます)。テーブルまたはマテリアライズド ビューのすべての列をカラム型ストアに追加する場合は、このパラメータを省略します。
google_columnar_engine_drop
関数を使用して、google_columnar_engine.relations
データベース フラグを編集し、追加された列を削除できます。ただし、そうすると、インスタンスの再起動時にこれらの列がカラム型ストアに再び追加されます。