
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Examine GKE application SQL queries using SQL Insights.
/ 25
Enable SQLCommenter on a GKE application.
/ 25
Redeploy the gMemegen application.
/ 25
Take actions to tune and optimise the database to enhance performance.
/ 25
このラボでは、SQL Insights を使用して Cloud SQL データベースのパフォーマンスを分析します。sqlcommenter ライブラリを使用して既存の Google Kubernetes Engine(GKE)アプリケーションを変更し、アプリケーション クエリにコメントによる注釈を付けます。こうしたコメントにより、アプリケーション内のクエリのソースを特定できるようになります。
各タスクで指定されているサービスとリソースを作成または構成する必要があり、各タスクを正常に完了するには、示されている詳細な手順に従う必要があります。
このラボでは、次のタスクの実行方法について学びます。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
ウィンドウで次の操作を行います。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
このラボで必要な API を有効にする必要があります。後のタスクでコンテナをビルドして Artifact Registry に push するため、まず Artifact Registry API を有効にする必要があります。
.kube
フォルダ(非表示)に config
ファイルが作成されます。ブラウザで、ロードバランサの Ingress IP アドレスに移動します。
Cloud Shell で次のコマンドを使用すると、ロードバランサの外部 IP アドレスへのクリック可能なリンクを作成できます。
このタスクでは、gMemegen アプリケーションによって生成されたクエリを調べます。アプリケーションでミームを作成し、アプリケーションの [Recent
] ページと [Random
] ページでそれらを表示することで、トラフィックを生成する必要があります。
このタスクを完了するには、Cloud SQL データベースで SQL Insights を有効にする必要があります。
Cloud コンソールで、[データベース] > [SQL] に移動し、postgres-gmemegen
インスタンスを選択します。
[プライマリ インスタンス] メニューで、[Query Insights] を選択します。
[有効にする] ボタンをクリックします。
[プライマリ インスタンス] > [Query Insights] ページで、[上位のクエリとタグ] の [タグ] タブを選択します。
[アプリケーション タグを保存] をクリックします。
このステップでは、gMemegen アプリケーションを使用して、少なくとも 4 つの新しいミームを作成して表示させます。その目的は、サンプルデータを生成し、利用可能なすべてのルートを利用してアプリケーションをテストすることです。
gMemegen アプリケーションのタブで、[Home] ページに移動し、画像を選択します。
新しいミームのページで、上部と下部のテキスト ボックスにテキストを入力します。思いついたどんなミームでも作成できます。
[Submit] ボタンをクリックします。新しいミームが表示されます。
ブラウザの [Back] ボタンを使用して戻ります。
[Recent] メニュー項目をクリックすると、最近作成したミームが表示されます。
[Sorted] メニュー項目をクリックすると、上部のテキストに基づいてアルファベット順に並べ替えられたミームが表示されます。
[Random] メニュー項目をクリックすると、ミームがランダムに表示されます。ブラウザの [Random
] タブを閉じます。
[Home] メニュー項目をクリックして、新しいミームを作成できるホームページに戻ります。
上記の 1 ~ 8 の手順を繰り返して、新しいミームを 4 つ以上作成してください。
[プライマリ インスタンス] メニューで、[Query Insights] に移動します。
[データベース] フィールドのプルダウン メニューを開き、[gmemegen_db
] を選択します。[gmemegen_db
] がリストに表示されない場合は、ページを更新してください。[gmemegen_db
] がリストに表示されるまでに時間がかかることがあります。gMemegen
アプリケーションでさらに操作を繰り返して、データベース トラフィックを増やすと、すぐに表示される場合があります。
上位のクエリとタグ
] が表示されるまで下にスクロールすると、gMemegen アプリケーションによって生成されたクエリが [クエリ] タブにリストされているのを確認できます。SQL Insights ではタグが表示されないため、クエリのソースを区別できません。sqlcommenter というデータベース デベロッパー向けツールを使用すると、アプリケーション クエリにコメントを追加できるため、このビューにタグが表示されるようになります。これは、開発者やテスターがアプリケーション クエリのソースをトレースし、デバッグや最適化を行う際に非常に役立ちます。
現在の時刻をメモしておきます。sqlcommenter ライブラリをアプリケーション コードに含める前と後の SQL Insights の結果を比較できるようにするためです。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、sqlcommenter ライブラリ コードが追加されるように gMemegen アプリケーションに変更を加えます。このライブラリ コードでアプリケーション クエリに注釈を付けると、SQL Insights で有用性の高いクエリになります。
このステップでは、gMemegen アプリの main.py
Python アプリケーション コードを変更して sqlcommenter を有効にします。変更はすでにコードに加えられており、あとはコメント化解除が必要なだけなので、シンプルな sed コマンドで実行できます。その後、アプリケーションを再ビルドして、新しいイメージを Artifact Registry に保存します。
sqlcommenter を有効にするには、gmemegen/app/main.py
Python ファイル内の次のコードブロックからコメントを削除し、sqlcommenter を使用してクエリにタグが追加されるようにアプリケーションを構成します。
このステップでは、変更されたアプリケーション コードをビルドし、そのイメージに「v2(バージョン 2)」というラベルを付けて Artifact Registry に push します。
確認を求めるメッセージが表示されたら、「Y
」と入力します。
アーティファクト リポジトリを作成します。
新しいイメージをビルドして Artifact Registry に push します。
ビルドと push のプロセスが完了するまで数分かかります。完了すると、ビルドが成功したことを示す出力が以下のように表示されます。
出力:
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、変更された gMemegen アプリケーションの Deployment を再実行します。その後、SQL Insights を使用して、アプリケーションの 2 つのバージョンのクエリを比較します。
Cloud Shell で次のコマンドを実行して、ご利用になっているプロジェクト ID、Cloud SQL 接続名、リージョンで Deployment YAML を更新します。
Cloud Shell で次のコマンドを実行して、アプリケーションの Deployment を再実行します。
Cloud Shell でアプリのバージョン 2.0
を選択して、ロードバランサを再デプロイします。
Cloud Shell で次のコマンドを実行して、Deployment の再実行が成功したことを確認します。
出力:
これで、gMemegen アプリケーションの新しい Deployment が実行されていることを確認できました。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは SQL Insights に戻り、sqlcommenter を含む、更新されたアプリケーションのデータベース アクティビティを確認します。まず、新しいバージョンのアプリを使用してミームをさらに作成し、より多くのデータベース アクティビティを生成する必要があります。
このステップでは、タスク 3 で Deployment を実行したアプリケーションの新しいバージョンを使用して、新しいミームを作成します。メニューバーのアプリケーション名の横に [(SQLcommenter)
] と表示されているため、新しいアプリであることがわかります。
このステップでは、Deployment が新たに実行されたアプリケーションのクエリを確認し、sqlcommenter によって挿入されたタグに注目します。
Cloud コンソールのタブの、[プライマリ インスタンス] > [Query Insights] ページの [上位のクエリとタグ] で、[タグ] タブを選択します。
[負荷(合計実行時間別)
] 列名をクリックします。これにより、タグ付けされたクエリのリストが更新されるため、sqlcommenter によってタグ付けされた最近のクエリがすべて表示されます。
[Controller
]、[Route
]、[DB Driver
]、[Framework
] タグが設定されていることに注目してください。
[タグ] タブにこのクエリが表示されない場合は、ウェブページを更新し、[タグ] タブをクリックしてから、[負荷(合計実行時間別)
] 列名をもう一度クリックします。
(続き - 上記画像の右の部分)
このステップでは、アプリケーション クエリのパフォーマンスを分析して、実行に時間がかかっているクエリを特定します。
上位のクエリとタグ
] までスクロールします。[タグ] タブをクリックします。
[Route
] 列で /sorted
を含むタグを選択します。
最も負荷が高いことが緑色のバーで示されているはずですが、ラボで使用するデータ量が比較的少ない場合は、そのように表示されない可能性があります。ラボの [クエリのレイテンシ] グラフに表示されるエントリ数はおそらく少ないですが、データが増えれば、レイテンシ値の高い(95 パーセンタイルおよび 99 パーセンタイル)クエリを確認できるようになります。
ブラウザの [戻る] ボタンを使用して、[上位のクエリとタグ] ビューに戻ります。または、[Query Insights] ページの上部にあるパンくずリストを使用して、postgres-gmemegen
インスタンスを選択します。
[Route
] 列で /recent
タグを選択します。このタグは、負荷とレイテンシが若干低いことを示しています。繰り返しになりますが、ラボでは、/sorted
ルートとは大差ない結果のみが表示されます
これらのクエリは、ほぼ同じ数の行を返します。では、なぜパフォーマンスが異なるのでしょうか?その答えは、meme.id
フィールドが meme
テーブルの主キーとなって、インデックス化されているからです。一方 meme.top_text
フィールドはインデックス化されていないため、実行に時間がかかります。
gmemegen_db
データベースは、このラボの作業中に UI で生成した行数のみが含まれるため、非常に小さいです。そのため、これら 2 つのルートのパフォーマンスの違いがすぐに確認できない場合や、ほとんどわからない場合があります。本番環境では、インデックス化されたフィールドまたはインデックス化されていないフィールドで並べ替えをするクエリでは、パフォーマンスの違いがはっきりとわかります。このタスクでは、前のタスクで特定した実行速度が遅いクエリを修正するために、gmemegen_db
データベースを変更します。
このステップでは、データベースの列にインデックスを追加して、パフォーマンスを向上させます。
Cloud コンソールの [プライマリ インスタンス] > [概要] ページで、[このインスタンスとの接続] セクションの [Cloud Shell を開く] をクリックします。コマンドが Cloud Shell コンソールに自動的に入力されるので、これを実行します。
パスワードの入力を求められたら、「supersecret!
」と入力します。
psql の postgres=>
プロンプトで、次のコマンドを実行します。
パスワードを再度入力するよう求められます。「supersecret!
」と入力します。
psql の gmemegen_db=>
プロンプトで、次のコマンドを実行します。
このステップでは、並べ替え対象の列にインデックスが追加されたので、実行に時間がかかっていたクエリのパフォーマンスを確認します。
Cloud コンソールの [プライマリ インスタンス] > [Query Insights] ページで、[上位のクエリとタグ] の [タグ] タブで、/sorted
タグを再度選択します。
下にスクロールして [クエリのレイテンシ] グラフを表示させると、レイテンシが改善していることがわかります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このラボはこれで完了です。
このセルフペース ラボは、「Manage PostgreSQL Databases on Cloud SQL」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められてバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、次のクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能な全クエストについては、Google Cloud Skills Boost カタログをご覧ください。
マニュアルの最終更新日: 2024 年 7 月 4 日
ラボの最終テスト日: 2024 年 7 月 4 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください