GSP1087

總覽
AlloyDB for PostgreSQL 是與 PostgreSQL 相容的全代管資料庫服務,能為您處理最嚴苛的企業資料庫工作負載。AlloyDB 結合 Google 的精華與極受歡迎的開放原始碼資料庫引擎 PostgreSQL,不僅效能卓越,也具備絕佳的擴充性和可用性。
有了資料欄引擎,AlloyDB 處理 SQL 掃描、彙整和匯總作業的速度就能大幅提升。資料欄引擎提供下列功能:1) 資料欄儲存庫,內含所選資料欄的資料表內容,並依據資料欄導向格式重新編排;2) 資料欄查詢規劃工具和執行引擎,可讓您在查詢使用資料欄儲存庫。
在這個實驗室,您會探索 AlloyDB 資料欄引擎的功能。
學習內容
在這個實驗室,您會瞭解如何執行下列工作:
- 建立基準資料集,以便測試資料欄引擎
- 執行基準測試
- 驗證資料欄引擎的資料庫旗標
- 設定或驗證資料欄引擎的資料庫擴充功能
- 測試資料欄引擎
設定和需求
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。
如何開始研究室及登入 Google Cloud 控制台
-
點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的臨時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
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,並支援 Tab 鍵自動完成功能。
- (選用) 您可以執行下列指令來列出使用中的帳戶:
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"}}}
注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 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 的第一步是建立並填入範例資料表。請執行下列指令,建立四個資料表。系統會提示您輸入 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)
點選「Check my progress」,確認目標已達成。
建立基準資料集
工作 2:執行基準測試
為進行評估,您會執行非常簡單的查詢 (依序掃描),然後在測試資料表新增至資料欄引擎之前與之後,使用說明查詢計畫。
- 返回殼層 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 (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 的資料列,依序點選「動作」(直向三點圖示) 和「編輯」。
-
展開「進階設定選項」專區。
-
在「旗標」下方,點選「新增資料庫旗標」。
-
點選「選擇旗標」來瀏覽可用旗標清單,瞭解支援的選項。
請注意,旗標 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 較小,可以直接新增至資料欄引擎來加以評估。實際部署作業中,您會運用資料欄引擎的建議架構,自動找出所有資料表中最常使用的資料欄。將這類資料欄交由引擎代管,即可獲得最大效益。
- 返回殼層 alloydb-client,執行下列查詢,將 pgbench_accounts 新增至資料欄引擎。查詢應該會在幾分鐘內完成。
SELECT google_columnar_engine_add('pgbench_accounts');
- 接著,請執行剛剛使用的說明計畫查詢,查看資料欄引擎的效果。值應與範例輸出內容中的值相似,不過資料是隨機生成,因此會有所不同。
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」差異為 10935.365 毫秒或 10.9 秒。這代表執行速度加快 141 倍。另外請注意,採用資料欄引擎的範例中,以資料欄掃描 (而非核心資料庫引擎) 彙整的資料列超過 450 萬個。
點選「Check my progress」,確認目標已達成。
測試資料欄引擎
注意事項:完成所有工作之後,如果分數未完全更新,請展開「查核點」方塊 (頁面右側的黃色側欄),然後點選個別工作的「Check my progress」來更新分數。
恭喜!
您已瞭解 AlloyDB 資料欄引擎的強大功能。
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2025 年 1 月 16 日
實驗室上次測試日期:2025 年 12 月 15 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。