このページでは、列を手動で追加および削除して、カラム型エンジンのカラム型ストアのコンテンツを管理する方法について説明します。
ワークロードに基づいて、カラム型ストアに列を手動で追加することや、テーブルまたはマテリアライズド ビューの一部またはすべての列をカラム型ストアから削除できます。クエリ評価では、保存されているカラム型データが自動的に使用され、クエリに回答します。
カラム型ストアに追加するテーブル、マテリアライズド ビュー、列を選択する場合は、カラム型ストアのサイズとワークロードの形状の両方を考慮してください。選択に適した候補としては、頻繁にスキャンされる大規模なテーブルやビューがあります。これらのテーブルまたはビュー内で、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
データベース フラグを編集し、追加された列を削除できます。ただし、そうすると、インスタンスの再起動時にこれらの列がカラム型ストアに再び追加されます。