GSP1087
概要
AlloyDB for PostgreSQL は、特に要求の厳しいエンタープライズ データベース ワークロード向けに構築された PostgreSQL 互換のフルマネージド データベース サービスです。AlloyDB は、Google の強みと、特に人気のオープンソース データベース エンジンの一つである PostgreSQL を組み合わせて、優れたパフォーマンス、スケーラビリティ、可用性を実現しています。
カラム型エンジンを使用すると、AlloyDB による SQL スキャン、結合、集計の処理速度を大幅に高速化できます。カラム型エンジンの機能は、1)列指向の形式に再編成された、選択した列のテーブルデータを含むカラムストアと、2)クエリでのカラムストアの使用をサポートするカラム型クエリ プランナーおよび実行エンジンです。
このラボでは、AlloyDB カラム型エンジンの機能について確認します。
演習内容
このラボでは、次のタスクの実行方法について学びます。
- カラム型エンジンのテスト用ベースライン データセットを作成する
- ベースライン テストを実行する
- カラム型エンジンのデータベース フラグを確認する
- カラム型エンジンのデータベース拡張機能を設定または確認する
- カラム型エンジンをテストする
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
- ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。
左側の [ラボの詳細] ペインには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
-
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細] ペインでもユーザー名を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細] ペインでもパスワードを確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
-
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
-
ウィンドウで次の操作を行います。
- Cloud Shell 情報ウィンドウで操作を進めます。
- Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、 が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
- [承認] をクリックします。
出力:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
タスク 1. カラム型エンジンのテスト用ベースライン データセットを作成する
このラボ環境では、ラボの開始時に AlloyDB クラスタとインスタンスがプロビジョニングされています。
- Google Cloud コンソールで、ナビゲーション メニュー
> [すべてのプロダクトを表示] をクリックします。次に、[データベース] で [AlloyDB for PostgreSQL] を選択します。
AlloyDB のページに、lab-cluster という名前のクラスタと lab-instance という名前のインスタンスがあります。インスタンスが完全に作成され、初期化されるまでに数分かかります。
[リソース名] 列の lab-instance というインスタンスの横に緑色のチェックマーク(「準備完了」のステータス)が表示されたら、次のステップに進みます。
-
lab-instance という名前のインスタンスの行の [プライベート IP アドレス] の下にあるプライベート IP アドレス(
10.100.0.2 など)をテキスト ファイルにコピーします。後で、この値を貼り付けるステップがあります。コロンとポート番号(:5432)は含めないでください。
カラム型エンジンの機能を評価するには、パフォーマンスの測定に使用する十分なサイズのデータセットが必要です。次のステップでは、PostgreSQL ツール pgbench を使用して、カラム型エンジンを評価するための模擬データセットを生成します。
-
ナビゲーション メニュー(
)で、[Compute Engine] の [VM インスタンス] をクリックします。
-
alloydb-client という名前のインスタンスの [接続] 列で、[SSH] をクリックしてターミナル ウィンドウを開きます。
-
次の環境変数を設定します。ALLOYDB_ADDRESS は、AlloyDB インスタンスのプライベート IP アドレスに置き換えます。
export ALLOYDB=ALLOYDB_ADDRESS
- 次のコマンドを実行して、AlloyDB インスタンスのプライベート IP アドレスを AlloyDB クライアント VM に保存し、ラボ全体で保持されるようにします。
echo $ALLOYDB > alloydbip.txt
-
pgbench を使用する場合はまず、サンプル テーブルを作成してデータを入力します。次のコマンドを実行して、4 つのテーブルのセットを作成します。postgres ユーザーのパスワード(Change3Me)を入力するよう求められます。
最大のテーブル pgbench_accounts の 5,000 万行が読み込まれます。この処理が完了するまでに数分かかります。
pgbench -h $ALLOYDB -U postgres -i -s 500 -F 90 -n postgres
dropping old tables...
NOTICE: table "pgbench_accounts" does not exist, skipping
NOTICE: table "pgbench_branches" does not exist, skipping
NOTICE: table "pgbench_history" does not exist, skipping
NOTICE: table "pgbench_tellers" does not exist, skipping
creating tables...
generating data (client-side)...
50000000 of 50000000 tuples (100%) done (elapsed 91.26 s, remaining 0.00 s)
creating primary keys...
done in 167.61 s (drop tables 0.00 s, create tables 0.01 s, client-side generate 93.16 s, primary keys 74.43 s).
-
psql クライアントに接続し、次のクエリを実行して pgbench_accounts テーブルの行数を確認します。postgres ユーザーのパスワード(Change3Me)を入力するよう求められます。
psql -h $ALLOYDB -U postgres
select count (*) from pgbench_accounts;
count
----------
50000000
(1 row)
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
ベースライン データセットを作成する
タスク 2. ベースライン テストを実行する
評価を目的として、シーケンシャル スキャンを実行する非常に単純なクエリを実行してから、カラム型エンジンへのテストテーブルの追加前と追加後に、そのクエリに対して EXPLAIN クエリプランを使用できます。
-
alloydb-client シェルに戻ります。psql クライアントは、まだアクティブな状態であるはずです。アクティブになっていない場合は、タスク 1 の手順に沿って再接続します。次のクエリを実行して、すべてのクエリ オペレーションのタイミングをオンにします。
\timing on
- 続けて、次のクエリを実行して実行時間を評価します。このクエリは、pgbench_accounts テーブル全体をシーケンシャル スキャンします。
注: このサンプルクエリはデモ用であるため、返される行数は 20 に制限されています。
SELECT aid, bid, abalance FROM pgbench_accounts WHERE bid < 189 OR abalance > 100 LIMIT 20;
aid | bid | abalance
-----+-----+----------
1 | 1 | 0
2 | 1 | 0
3 | 1 | 0
4 | 1 | 0
5 | 1 | 0
6 | 1 | 0
7 | 1 | 0
8 | 1 | 0
9 | 1 | 0
10 | 1 | 0
11 | 1 | 0
12 | 1 | 0
13 | 1 | 0
14 | 1 | 0
15 | 1 | 0
16 | 1 | 0
17 | 1 | 0
18 | 1 | 0
19 | 1 | 0
20 | 1 | 0
(20 rows)
- 次のクエリを実行して、制限のないクエリに対する EXPLAIN プランを生成します。値はサンプル出力の値と似たものになりますが、データの生成はランダムに行われるため、同一にはなりません。
注: EXPLAIN クエリプランを進めるために、Space キーを押す必要がある場合があります。
EXPLAIN (ANALYZE,COSTS,SETTINGS,BUFFERS,TIMING,SUMMARY,WAL,VERBOSE)
SELECT count(*) FROM pgbench_accounts WHERE bid < 189 OR abalance > 100;
QUERY PLAN
---------------------------------------------------------------------------------------------------------------
---------------------------------------------------
Finalize Aggregate (cost=1242226.53..1242226.54 rows=1 width=8) (actual time=11010.409..11014.083 rows=1 loop
s=1)
Output: count(*)
Buffers: shared hit=20921 read=888170
I/O Timings: read=19536.769
-> Gather (cost=1242226.32..1242226.53 rows=2 width=8) (actual time=11010.398..11014.075 rows=3 loops=1)
Output: (PARTIAL count(*))
Workers Planned: 2
Workers Launched: 2
Buffers: shared hit=20921 read=888170
I/O Timings: read=19536.769
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!! Section removed for pasting !!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Filter: ((pgbench_accounts.bid < 189) OR (pgbench_accounts.abalance > 100))
Rows Removed by Filter: 10400000
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!! Section removed for pasting !!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffers: shared hit=6
Planning Time: 0.117 ms
Execution Time: 11014.169 ms
(38 rows)
-
結果の Planning Time と Execution Time の値に特に注目してください。出力例では、Planning Time は 0.117 ミリ秒、Execution Time は 11014.169 ミリ秒(11.014 秒)となっています。値はサンプル出力の値と似たものになりますが、データの生成はランダムに行われるため、同一にはなりません。
-
実行結果の Planning Time と Execution Time の値をテキスト ファイルにコピーします。後で、カラム型エンジンを有効にした後の結果と比較できます。クエリプランの結果全体をテキスト ファイルにコピーしても構いません。
-
Q キーを押して、クエリプランを閉じます。
タスク 3. カラム型エンジンのデータベース フラグを確認する
このタスクでは、インスタンスのカラム型エンジン データベース フラグを確認します。
-
Google Cloud コンソールで、ナビゲーション メニュー(
)> [すべてのプロダクトを表示] をクリックします。次に、[データベース] で [AlloyDB for PostgreSQL] を選択します。
-
lab-instance という名前のインスタンスの行のアクション アイコン(縦に 3 つ並んだ点のアイコン)をクリックし、[編集] をクリックします。
-
[高度な構成のオプション] というセクションを開きます。
-
[フラグ] で、[データベース フラグを追加] をクリックします。
-
[フラグを選択] をクリックして、利用可能なフラグのリストを参照し、サポートされているオプションを大まかに確認します。
google_columnar_engine.enabled という名前のフラグがすでに有効(「オン」のステータス)になっています。このラボでは、フラグを追加しません。
- [キャンセル] をクリックして、[インスタンスの編集] ページを終了します。
タスク 4. カラム型エンジンのデータベース拡張機能を設定または確認する
前のセクションに続き、このタスクでは、データベース拡張機能を設定して、AlloyDB クラスタのカラム型エンジン機能を完全に有効化します。
フラグの構成とは異なり、データベース拡張機能を有効にするには、psql クライアントを介してインスタンスに接続する必要があります。
-
alloydb-client シェルに戻ります。psql クライアントは、まだアクティブな状態であるはずです。アクティブになっていない場合は、タスク 1 の手順に沿って再接続します。
-
次のクエリを実行して、postgres データベースに接続していることを確認します。
\c postgres
- 次のシステムクエリを実行して、データベースで有効になっている拡張機能の詳細を表示します。
注: 表示される拡張機能のリストは異なる場合があります。
\dx
List of installed extensions
Name | Version | Schema | Description
------------------------+---------+------------+---------------------------------------
google_columnar_engine | 1.0 | public | Google extension for columnar engine
google_db_advisor | 1.0 | public | Google extension for Database Advisor
hypopg | 1.3.2 | public | Hypothetical indexes for PostgreSQL
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(4 rows)
- リストに google_columnar_engine が表示されている場合は、次のタスク(タスク 5)に進みます。リストに google_columnar_engine が表示されていない場合は、次のコマンドを実行します。
CREATE EXTENSION IF NOT EXISTS google_columnar_engine;
- 拡張機能のクエリを再度実行して、google_columnar_engine 拡張機能が有効になっていることを確認します。
\dx
タスク 5. カラム型エンジンをテストする
メインテーブル(pgbench_accounts)は比較的小さいため、評価用に直接 Columnar Engine に追加できます。実際のデプロイでは、カラム型エンジンの推奨フレームワークを利用して、すべてのテーブルで特に使用頻度の高い列を自動的に特定します。こうすることで、エンジンによる管理から最大のメリットを得られます。
-
alloydb-client シェルに戻ります。次のクエリを実行して、pgbench_accounts をカラム型エンジンに追加します。クエリが完了するまでに数分かかります。
SELECT google_columnar_engine_add('pgbench_accounts');
- 次に、先ほど実行したものと同じ EXPLAIN クエリプランを実行して、カラム型エンジンの影響を確認します。値はサンプル出力の値と似たものになりますが、データの生成はランダムに行われるため、同一にはなりません。
EXPLAIN (ANALYZE,COSTS,SETTINGS,BUFFERS,TIMING,SUMMARY,WAL,VERBOSE)
SELECT count(*) FROM pgbench_accounts WHERE bid < 189 OR abalance > 100;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Finalize Aggregate (cost=142400.72..142400.73 rows=1 width=8) (actual time=75.948..78.680 rows=1 loops=1)
Output: count(*)
-> Gather (cost=142400.51..142400.72 rows=2 width=8) (actual time=71.555..78.667 rows=3 loops=1)
Output: (PARTIAL count(*))
Workers Planned: 2
Workers Launched: 2
-> Partial Aggregate (cost=141400.51..141400.52 rows=1 width=8) (actual time=45.768..45.771 rows=1 loops=3)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Section removed for pasting
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Rows Removed by Columnar Filter: 10400000
Rows Aggregated by Columnar Scan: 4505600
Columnar cache search mode: native
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Section removed for pasting
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffers: shared hit=22 read=3 dirtied=1
I/O Timings: read=0.560
Planning Time: 2.022 ms
Execution Time: 78.804 ms
(29 rows)
-
結果の Planning Time と Execution Time の値に特に注目してください。カラム型エンジンを使用した後のサンプルでは、Planning Time は 2.022 ミリ秒、Execution Time は 78.804 ミリ秒になっています。値はサンプル出力の値と似たものになりますが、データの生成はランダムに行われるため、同一にはなりません。
-
提供されたサンプルから、カラム型エンジンを使用する前の Execution Time とカラム型エンジンを使用した後の Execution Time の差は 10935.365 ミリ秒(10.9 秒)であることがわかります。つまり、141 分の 1 に減少したことになります。カラム型エンジンを使用した後のサンプルでは、コア データベース エンジンではなくカラム型スキャンを使用して 450 万を超える行が集計されている点にも注意してください。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
カラム型エンジンをテストする
注: すべてのタスクを完了してもスコアが完全に更新されない場合は、スコアの [チェックポイント] ボックス(ページの右側にある黄色のサイドバー)を開き、各タスクの [進行状況を確認] をクリックしてスコアを更新します。
お疲れさまでした
ここでは、AlloyDB カラム型エンジンの優れた機能について確認しました。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 1 月 16 日
ラボの最終テスト日: 2025 年 12 月 15 日
Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。