列ストアのコンテンツを手動で管理する

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

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

列ストアに追加するテーブル、マテリアライズド ビュー、列を選択する場合は、列ストアのサイズとワークロードの形状の両方を考慮してください。選択に適した候補としては、頻繁にスキャンされる大規模なテーブルやビューがあります。これらのテーブルまたはビュー内で、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 データベース フラグを編集して追加された列を削除できます。ただし、そうすると、インスタンスの再起動時にこれらの列が列ストアに再び追加されます。