カラムストア コンテンツを手動で管理する

このページでは、列を手動で追加および削除して、カラム型エンジンのカラムストアのコンテンツを管理する方法について説明します。

ワークロードに基づいて、カラムストアに列を手動で追加できます。また、テーブルまたはマテリアライズド ビューの一部またはすべての列をカラムストアから削除することもできます。クエリ評価では、保存されているカラム形式のデータが自動的に使用され、クエリに回答します。

カラムストアに追加するテーブル、マテリアライズド ビュー、列を選択する場合は、カラムストアのサイズとワークロードの形状の両方を考慮してください。選択に適した候補としては、頻繁にスキャンされる大規模なテーブルやビューがあります。これらのテーブルまたはビュー内で、OLAP ワークロードで使用されている大規模で一意でないインデックスを特定します。これらのインデックスの列をカラムストアに追加し、インデックスを削除することで、プライマリ インスタンスでのメンテナンスに関連するパフォーマンス コストを排除できます。

次のいずれかの方法で、カラム型エンジンのカラムストアのコンテンツを管理します。

テーブル、列、マテリアライズド ビューをカラムストアに追加する際に使用できるデータ型とデータソースについては、カラムストアに追加できるデータをご覧ください。

始める前に

  • 使用している Google Cloud プロジェクトに、次のいずれかの IAM ロールが必要です。
    • roles/alloydb.admin(AlloyDB 管理者の IAM 事前定義ロール)
    • roles/owner(オーナーの IAM 基本ロール)
    • roles/editor(編集者の IAM 基本ロール)

    これらのロールが付与されていない場合は、アクセス権を付与するよう組織管理者に依頼してください。

データベース フラグを更新してカラムストアのコンテンツを管理する

google_columnar_engine.relations データベース フラグを更新することで、カラムストアのコンテンツを手動で管理できます。このフラグには、カラムストアのすべてのデータソースを表す単一の値があります。再起動中、このフラグで指定された列がカラムストアに自動的に入力されます。

このフラグは、自動的なカラム化と組み合わせて使用できます。google_columnar_engine.relations フラグで指定した列を入力した後に、カラム型エンジンで使用可能なメモリがある場合、自動的なカラム化により、必要に応じてカラムストアに列が追加されます。

Google Cloud CLI または Google Cloud コンソールを使用してインスタンスのデータベース フラグを設定する方法については、インスタンスのデータベース フラグを構成するをご覧ください。

フラグを使用して列を追加する

カラムストアに列を追加するには、インスタンスの 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

インスタンスにデータベース フラグを設定する方法については、インスタンスのデータベース フラグを構成するをご覧ください。

コマンドライン構文に関する注

Google Cloud CLI を使用して google_columnar_engine.relations フラグを設定する場合は、代替区切り文字構文を使用して、設定するデータベース フラグを区切る必要があります。列リストがカンマ区切りであるため、同じコマンドライン引数内でフラグを指定する場合は、カンマ以外の文字を使用する必要があります。

次の例は、gcloud CLI を使用して public スキーマの 2 つの列をカラムストアに追加する方法を示しています。この例では、gcloud alloydb instance update コマンドを使用してデータベース フラグを設定する場合、デフォルト以外の値を設定する他のすべてのデータベース フラグも設定する必要があるため、カラム型エンジンを有効にする別のフラグを設定しています。

gcloud alloydb instances update INSTANCE_NAME \
    --database-flags=^:^\
google_columnar_engine.relations='DATABASE_NAME.public.TABLE_NAME(COLUMN_1,COLUMN_2)'\
:google_columnar_engine.enabled=on\
[:FLAG_3=VALUE_3 ...] \
    --region=REGION_ID \
    --cluster=CLUSTER_ID

フラグを使用して列を削除する

カラムストアから列を削除するには、前のセクションで説明した google_columnar_engine.relations フラグに新しい値を設定し、削除する列を除外します。

カラムストアからすべての列を削除するには、インスタンスから google_columnar_engine.relations フラグの設定を解除します。

インスタンスにデータベース フラグを設定する方法については、インスタンスのデータベース フラグを構成するをご覧ください。

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 データベース フラグを編集し、追加された列を削除できます。ただし、そうすると、インスタンスの再起動時にこれらの列がカラムストアに再び追加されます。