arrow_back

觀測並調整 PostgreSQL 適用的 Cloud SQL 資料庫

登录 加入
访问 700 多个实验和课程

觀測並調整 PostgreSQL 適用的 Cloud SQL 資料庫

实验 1 小时 universal_currency_alt 1 积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

GSP921

Google Cloud 自學實驗室標誌

總覽

在本實驗室,您將透過 SQL Insights 分析 Cloud SQL 資料庫的效能。您需要使用 SQLcommenter 程式庫修改現有的 Google Kubernetes Engine (GKE) 應用程式,為應用程式查詢加上註解,以識別應用程式中的查詢來源。

請務必按照本實驗室提供的詳細指示,建立/設定各項工作指定的服務和資源,才能順利完成所有工作。

目標

在本實驗室,您將瞭解如何執行下列工作:

  • 設定並使用 SQL Insights。
  • 設定應用程式以使用 SQLcommenter。
  • 將資料庫調整至最佳狀態來提高效能。

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username。

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password。

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。「導覽選單」圖示和搜尋欄位

啟動 Cloud Shell

Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示 「啟動 Cloud Shell」圖示

  2. 系統顯示視窗時,請按照下列步驟操作:

    • 繼續操作 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,並支援 Tab 鍵自動完成功能。

  1. (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
  1. 點按「授權」

輸出內容:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南

啟用 API

請啟用本實驗室所需的 API。在後續工作,您將建構容器並推送至 Artifact Registry,因此必須先啟用 Artifact Registry API。

  • 在 Cloud Shell 執行下列指令:
gcloud services enable sqladmin.googleapis.com gcloud services enable artifactregistry.googleapis.com

取得 Kubernetes 叢集的憑證

  • 實驗室啟動時會自動部署 Kubernetes 叢集,您必須設定該叢集的驗證機制。這項程序會建立 config 檔案,放在主資料夾的隱藏資料夾 .kube 內。
export ZONE={{{project_0.default_zone | Zone}}} gcloud container clusters get-credentials postgres-cluster --zone=$ZONE

執行 gMemgen 應用程式

  1. 打開瀏覽器,前往負載平衡器的 ingress IP 位址。

  2. 在 Cloud Shell 執行下列指令,便能建立可點選的連結,連往負載平衡器的外部 IP 位址:

export LOAD_BALANCER_IP=$(kubectl get svc gmemegen-service \ -o=jsonpath='{.status.loadBalancer.ingress[0].ip}' -n default) echo gMemegen Load Balancer Ingress IP: http://$LOAD_BALANCER_IP
  1. 在 Cloud Shell 點選該連結後,gMemegen 應用程式就會在瀏覽器執行。

工作 1:使用 SQL Insights 檢查 GKE 應用程式的 SQL 查詢

在這項工作,您將檢查 gMemegen 應用程式生成的查詢。首先,您需要使用該應用程式製作網路迷因來產生流量,並在應用程式的「Recent」和「Random」頁面查看這些網路迷因。

在 PostgreSQL 適用的 Cloud SQL 執行個體啟用 SQL Insights

為順利完成這項工作,請在 Cloud SQL 資料庫啟用 SQL Insights。

  1. 前往 Cloud 控制台,依序點選「資料庫」>「SQL」,然後選取 postgres-gmemegen 執行個體。

  2. 在「主要執行個體」選單,選取「查詢洞察」

  3. 點選「啟用」按鈕。

  4. 依序前往「主要執行個體」>「查詢洞察」頁面,選取「熱門查詢與標記」部分的「標記」分頁標籤。

  5. 點選「儲存應用程式標記」

製作並查看網路迷因

在這個步驟,您將使用 gMemegen 應用程式製作至少 4 個新的網路迷因,並查看成果。這項操作目的是讓應用程式發揮效用,生成一些範例資料並運用所有可用路由。

  1. 在 gMemegen 應用程式分頁,前往「Home」頁面並選取一個圖像。

  2. 在「new meme」頁面頂端和底部的文字方塊輸入文字,開始製作想要的網路迷因。

  3. 點選「Submit」按鈕,您製作的新網路迷因會隨即顯示。

  4. 點選瀏覽器的「返回」按鈕,回到先前的頁面。

  5. 點選「Recent」選單項目,即可查看最近製作的網路迷因。

  6. 點選「Sorted」選單項目,即可依頂端文字的字母排序來查看網路迷因。

  7. 點選「Random」選單項目,即可隨機查看網路迷因。接著,關閉瀏覽器中的「Random」分頁。

  8. 點選「Home」選單項目,返回首頁製作新的網路迷因。

請反覆執行上方第 1 至第 8 點,製作至少 4 個新的網路迷因。

6 個網路迷因範例

使用 SQL Insights 檢查 gMemegen 應用程式的資料庫活動

  1. 在「主要執行個體」選單,點選「查詢洞察」

  2. 開啟「資料庫」欄位的下拉式選單,然後選取「gmemegen_db」。如果清單未列出 gmemegen_db,請重新整理頁面。gmemegen_db 可能要過一段時間才會顯示在清單中。這種情況下,建議您在 gMemegen 應用程式執行更多動作,產生更多資料庫流量。

gmemegen_db 資料庫項目

  1. 向下捲動至「熱門查詢與標記」部分,您會看見 gMemegen 應用程式生成的查詢列在「查詢」分頁中。

「查詢」分頁

  1. 點選「標記」分頁標籤,則會發現目前沒有列出任何標記。

SQL Insights 無法區分查詢的來源,因為這些查詢沒有標記。您可使用資料庫開發人員工具 SQLcommenter,為應用程式查詢加上註解,即可在這個檢視畫面填入標記。如果開發和測試人員想追蹤應用程式查詢的來源,協助偵錯及執行最佳化作業,這項工具就相當實用。

請記下目前時間,以便比較 SQL Insights 提供的結果,瞭解在應用程式程式碼加入 SQLcommenter 程式庫前後的差異。

點選「Check my progress」,確認目標已達成。使用 SQL Insights 檢查 GKE 應用程式的 SQL 查詢。

工作 2:在 GKE 應用程式啟用 SQLcommenter

在這項工作,您將修改 gMemegen 應用程式,加入 SQLcommenter 程式庫程式碼,為應用程式查詢加上註解,讓這些查詢在 SQL Insights 發揮更大效益。

修改 gMemegen 應用程式並重新建構原始碼

在這個步驟,為啟用 SQLcommenter,您將修改 gMemegen 應用程式的 main.py Python 應用程式程式碼。目前程式碼已變更完畢,只需要取消註解,而這項操作可透過簡單的 sed 指令來完成。您也必須重新建構應用程式,並將新的映像檔儲存至 Artifact Registry。

  1. 在 Cloud Shell,下載 gMemegen 應用程式原始碼:
gsutil -m cp -r gs://spls/gsp921/gmemegen .

如要啟用 SQLcommenter,請在 gmemegen/app/main.py Python 檔案找到下列程式碼區塊,並從中移除註解,即可使用 SQLcommenter 設定應用程式,為查詢加上標記。

##from sqlalchemy import event ##from google.cloud.sqlcommenter.sqlalchemy.executor import BeforeExecuteFactory app = Flask(__name__) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False ##app.config['SQLALCHEMY_RECORD_QUERIES'] = True app.config['SQLALCHEMY_ECHO'] = True app.config['SQLALCHEMY_DATABASE_URI'] = get_db_uri() db = SQLAlchemy(app) ##listener = BeforeExecuteFactory(with_db_driver=True) ##event.listen(db.engine, 'before_cursor_execute', listener, retval=True)
  1. 在 Cloud Shell 執行下列指令,將 gMemegen 應用程式程式碼取消註解,即可啟用 SQLcommenter
sed -i 's/##//g' gmemegen/app/main.py
  1. 在 Cloud Shell 變更應用程式的標頭範本,以識別更新後的版本:
sed -i 's/gMemegen/gMemegen (SQLcommenter)/g' gmemegen/app/templates/header.html

建構新的映像檔並推送至 Artifact Registry

在這個步驟,您將建構修改過的應用程式程式碼,並將標為第 2 版的映像檔推送至 Artifact Registry。

  1. 為 Artifact Registry 設定 Docker 驗證機制: export REGION={{{project_0.default_region | REGION}}} gcloud auth configure-docker ${REGION}-docker.pkg.dev

系統要求您確認時,請輸入 Y

  1. 建立構件存放區:

    export REPO=gmemegen gcloud artifacts repositories create $REPO \ --repository-format=docker --location=$REGION
  2. 建構新的映像檔並推送至 Artifact Registry:

    cd gmemegen export PROJECT_ID=$(gcloud config list --format 'value(core.project)') gcloud builds submit --tag ${REGION}-docker.pkg.dev/${PROJECT_ID}/gmemegen/gmemegen-app:v2

建構及推送程序需要幾分鐘才能完成。完成後,輸出內容應該會指出作業成功,如下所示。

輸出內容:

ID: 801538cf-f0e5-43b4-b0e4-5071ad026bf3 CREATE_TIME: 2022-08-10T18:41:21+00:00 DURATION: 1M27S SOURCE: gs://qwiklabs-gcp-04-2dea2c1461c0_cloudbuild/source/1660156876.254161-89dl7080030e49f28e42ab7dc207d91a.tgz IMAGES: us-east1-docker.pkg.dev/qwiklabs-gcp-04-2dea2c1461c0/gmemegen/gmemegen-app:v2 STATUS: SUCCESS

點選「Check my progress」,確認目標已達成。在 GKE 應用程式啟用 SQLcommenter。

工作 3:重新部署 gMemegen 應用程式

在這項工作,您將重新部署修改過的 gMemegen 應用程式,接著就能使用 SQL Insights,比較兩種應用程式版本的查詢。

  1. 在 Cloud Shell 執行下列指令,將部署作業 YAML 改成您的專案 ID、Cloud SQL 連線名稱和區域:

    export CLOUDSQL_INSTANCE=postgres-gmemegen export CONNECTION_NAME=$(gcloud sql instances describe $CLOUDSQL_INSTANCE --format 'value(connectionName)') sed -i "s/CONNECTION-NAME/${CONNECTION_NAME}/g" gmemegen_canary_deployment.yaml export PROJECT_ID=$(gcloud config list --format 'value(core.project)') sed -i "s/PROJECT-ID/${PROJECT_ID}/g" gmemegen_canary_deployment.yaml export REGION={{{project_0.default_region | REGION}}} sed -i "s/us-central1/${REGION}/g" gmemegen_canary_deployment.yaml
  2. 在 Cloud Shell 執行下列指令,重新部署應用程式:

kubectl apply -f gmemegen_canary_deployment.yaml
  1. 在 Cloud Shell 重新部署負載平衡器,並選取 version 2.0 應用程式:

    sed -i "s/1.0/2.0/g" gmemegen-service.yaml kubectl apply -f gmemegen-service.yaml
  2. 在 Cloud Shell 執行下列指令,確認部署作業是否成功:

kubectl get pods

輸出內容:

NAME READY STATUS RESTARTS AGE gmemegen-7975bf9776-fl7g9 2/2 Running 0 7m46s gmemegen-canary-7cc8687cfc-rqx4h 2/2 Running 0 33s

新的 gMemegen 應用程式部署作業會開始執行。

點選「Check my progress」,確認目標已達成。重新部署 gMemegen 應用程式。

工作 4:在 SQL Insights 查看應用程式查詢

在這項工作,您將返回 SQL Insights,查看新版應用程式的資料庫活動,包括 SQLcommenter。首先,您必須使用新版應用程式製作網路迷因,產生更多資料庫活動。

製作新的網路迷因

在這個步驟,您將使用在工作 3 部署的新版應用程式,製作新的網路迷因。請注意,選單列的應用程式名稱旁邊會顯示 (SQLcommenter),代表這是新的應用程式。

gMemegen (SQLcommenter) 應用程式

  • 切換至 gMemegen 應用程式分頁,製作新的網路迷因,並點選「Recent」和「Sorted」連結數次,即可產生資料庫流量。

在 SQL Insights 查看應用程式查詢

在這個步驟,您將查看新部署應用程式的查詢,並留意是否有 SQLcommenter 插入的標記。

  1. 在「Cloud 控制台」分頁,依序前往「主要執行個體」>「查詢洞察」頁面,然後選取「熱門查詢與標記」部分的「標記」分頁標籤。

  2. 點選「負載 (根據總時間)」欄名稱,系統會重新整理已標記查詢的清單,顯示 SQLcommenter 標記的所有近期查詢。

您會發現「控制器」、「路由」、「資料庫驅動程式」和「框架」標記都已自動填入。

如果「標記」分頁未顯示這項查詢,請重新整理網頁,然後再次依序點選「標記」分頁標籤和「負載 (根據總時間)」欄名稱。

「標記」分頁 (接續上圖,顯示完整寬度) 「標記」分頁 (接續)

在 SQL Insights 找出執行速度緩慢的查詢

在這個步驟,您將分析應用程式查詢的效能,找出執行速度緩慢的查詢。

  1. 「Cloud 控制台」的「查詢洞察」頁面,向下捲動至「熱門查詢與標記」部分。

「查詢」分頁

  1. 點選「標記」分頁標籤。

  2. 在「路由」欄選取 /sorted 標記。

這個標記的負載應該最高 (如綠色長條所示),但本實驗室的資料量較少,結果不一定是如此。實驗室的「查詢延遲」圖表上,可能只會顯示幾個資料點並提供額外資料,方便您瞭解延遲時間值較高 (P95 和 P99) 的查詢。

「查詢延遲」圖表

  1. 點選瀏覽器的「返回」按鈕,回到「熱門查詢與標記」檢視畫面。您也可使用「查詢洞察」頁面頂端的導覽標記,並選取 postgres-gmemegen 執行個體。

  2. 在「路由」欄選取 /recent 標記;這個標記的負載和延遲時間應該會略低。再次提醒,本實驗室的圖表只會顯示幾個資料點,結果可能與 /sorted 路由差不多。

「查詢延遲」圖表

這些查詢傳回的列數大致相同,但為什麼效能有差異?事實上,meme.id 欄是 meme 資料表的主鍵,因此已建立索引;meme.top_text 欄則未建立索引,需要的執行時間較長,兩者免不了出現差異。

注意:gmemegen_db 資料庫很小,當中只有您在本實驗室透過 UI 生成的幾列資料,因此這兩個路由的效能差異可能不顯眼,甚至難以察覺。如果是在正式環境,針對已建立索引和未建立索引欄位的查詢,效能上就會有明顯的差異。

工作 5:將資料庫調整至最佳狀態來提高效能

在這項工作,您將修改 gmemegen_db 資料庫,解決在前一項工作發現的查詢速度緩慢問題。

為 PostgreSQL 適用的 Cloud SQL 資料庫新增索引

在這個步驟,您將為資料庫的資料欄新增索引,藉此提升效能。

  1. 在 Cloud Console 控制台,依序前往「主要執行個體」>「總覽」頁面,找到「連線至這個執行個體」部分,並點選「開啟 Cloud Shell」。Cloud Shell 主控台會自動填入指令,您可直接執行。

  2. 出現提示時,請輸入密碼:supersecret!

  3. psqlpostgres=> 提示詞,執行下列指令:

    \c gmemegen_db
  4. 系統會再次提示您輸入密碼:supersecret!

  5. psqlgmemegen_db=> 提示詞,執行下列指令:

CREATE INDEX idx_meme_top_text ON meme(top_text);
  1. 開啟 gMemegen 應用程式分頁,然後點選「Sorted」連結數次,即可生成新的查詢。

檢查查詢效能

在這個步驟,您會檢查原本執行速度緩慢的查詢在新增索引之後,效能是否有提升。

  1. 在 Cloud Console 控制台,依序前往「主要執行個體」>「查詢洞察」頁面,找到「熱門查詢與標記」部分,並再次選取「標記」分頁中的 /sorted 標記。

  2. 向下捲動至「查詢延遲」圖表,您會發現延遲時間值應該已降低。

「查詢延遲」圖表

注意:在本實驗室,資料庫中的資料量較少,因此可能不會出現明顯差異。

點選「Check my progress」,確認目標已達成。將資料庫調整至最佳狀態來提高效能。

您已完成本實驗室的所有工作!

恭喜!

完成任務

這個自學實驗室屬於「在 Cloud SQL 管理 PostgreSQL 資料庫」任務的一部分。「任務」是指一系列相關的實驗室課程,這些課程構成完整的學習路徑。完成這項任務後即可獲得徽章,表彰您的成就。徽章可公開展示,也能連結至您的線上履歷或社群媒體帳戶。歡迎報名參加這個任務,立即取得完成學分。您可以瀏覽 Google Cloud Skills Boost 目錄,查詢所有能進行的任務。

使用手冊上次更新日期:2024 年 7 月 4 日

實驗室上次測試日期:2024 年 7 月 4 日

Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。