实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

使用 AlloyDB 列式引擎加速分析查询

实验 25 分钟 universal_currency_alt 1 个点数 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP1087

Google Cloud 自学实验的徽标

概览

AlloyDB for PostgreSQL 是一项兼容 PostgreSQL 的全托管式数据库服务,适用于要求严苛的企业数据库工作负载。AlloyDB 结合了 Google 的技术精华和最受欢迎的开源数据库引擎之一 PostgreSQL,可提供卓越的性能、扩缩能力和可用性。

列式引擎可以显著加快 AlloyDB 处理 SQL 扫描、联接和汇总的速度。列式引擎提供以下功能:1) 列存储区,其中包含所选列的表数据(重新整理为面向列的格式);2) 列式查询规划工具和执行引擎,支持在查询中使用列存储区。

在本实验中,您将探索 AlloyDB 列式引擎的功能。

您将执行的操作

在本实验中,您将学习如何执行以下任务:

  • 创建基准数据集以测试列式引擎
  • 运行基准测试
  • 验证列式引擎的数据库标志
  • 设置或验证列式引擎的数据库扩展程序
  • 测试列式引擎

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:

    • “打开 Google Cloud 控制台”按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在“实验详细信息”窗格中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在“实验详细信息”窗格中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 Cloud Shell 信息窗口中的设置。
    • 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。

如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 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"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

任务 1. 创建基准数据集以测试列式引擎

在本实验环境中,系统会在您开始实验时预配 AlloyDB 集群和实例。

  1. 在 Google Cloud 控制台中,依次点击导航菜单 “导航菜单”图标 > 查看所有产品。然后,在数据库下选择 AlloyDB for PostgreSQL

在 AlloyDB 页面上,有一个名为 lab-cluster 的集群和一个名为 lab-instance 的实例。实例需要几分钟时间才能完全创建和初始化。

请等待资源名称列中名为 lab-instance 的实例旁边显示绿色对勾标记(“准备就绪”状态),然后再继续执行下一步。

  1. 在名为 lab-instance 的实例所在行中,将专用 IP 地址下的专用 IP 地址(例如 10.100.0.2)复制到文本文件中,以便在后续步骤中粘贴该值。请勿包含英文冒号和端口号 (:5432)。

如需评估列式引擎的功能,您需要一个足够大的数据集来衡量性能。在接下来的步骤中,您将使用 PostgreSQL 工具 pgbench 生成一个合成数据集,以评估列式引擎。

  1. 导航菜单 (“导航菜单”图标) 中,点击 Compute Engine 下的虚拟机实例

  2. 对于名为 alloydb-client 的实例,在连接列中点击 SSH,打开一个终端窗口。

  3. 设置以下环境变量,并将 ALLOYDB_ADDRESS 替换为 AlloyDB 实例的专用 IP 地址。

export ALLOYDB=ALLOYDB_ADDRESS
  1. 运行以下命令,将 AlloyDB 实例的专用 IP 地址存储在 AlloyDB 客户端虚拟机上,以便在整个实验过程中保留该地址。
echo $ALLOYDB > alloydbip.txt
  1. 使用 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).
  1. 连接到 psql 客户端并运行以下查询,以验证 pgbench_accounts 表中的行数。系统会提示您输入 postgres 用户的密码,即 Change3Me
psql -h $ALLOYDB -U postgres select count (*) from pgbench_accounts; count ---------- 50000000 (1 row)

点击检查我的进度,验证已完成以下目标: 创建基准数据集

任务 2. 运行基准测试

为了进行评估,您可以运行一个执行顺序扫描的简单查询,然后在将测试表添加到列式引擎之前和之后,使用说明查询计划来查看该查询的执行情况。

  1. 返回 alloydb-client shell。psql 客户端应仍处于活动状态。否则,请按照任务 1 中的说明重新连接。运行以下查询,以针对所有查询操作启用计时。
\timing on
  1. 接下来,运行以下查询来评估运行时间。此查询对整个 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)
  1. 运行以下查询,为不受限制的查询生成说明计划。您的值应与示例输出中的值类似,但会因数据生成的随机性而有所不同。
注意:您可能需要按空格键才能继续查看查询说明计划。 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)
  1. 在结果中,请特别注意 Planning Time(规划时间)和 Execution Time(执行时间)值。在示例输出中,规划时间为 0.117 毫秒,执行时间为 11014.169 毫秒,即 11.014 秒。您的值应与示例输出中的值类似,但会因数据生成的随机性而有所不同。

  2. 将运行中的规划时间执行时间值复制到文本文件中,以便稍后与启用列式引擎后的结果进行比较。您还可以将整个查询计划结果复制到文本文件中。

  3. Q 键可关闭查询计划。

任务 3. 验证列式引擎的数据库标志

在此任务中,您将检查实例中的列式引擎数据库标志。

  1. 在 Google Cloud 控制台中,依次点击导航菜单 (“导航菜单”图标) > 查看所有产品。然后,在数据库下选择 AlloyDB for PostgreSQL

  2. 在名为 lab-instance 的实例所在的行中,点击操作(三个竖点的图标),然后点击修改

  3. 展开名为高级配置选项的部分。

  4. 标志下,点击添加数据库标志

  5. 点击选择标志,浏览可用标志列表,了解受支持的选项。

请注意,名为 google_columnar_engine.enabled 的标志已启用(状态为“已启用”)。在本实验中,您不用添加其他标志。

  1. 点击取消以退出修改实例页面。

任务 4. 设置或验证列式引擎的数据库扩展程序

承接上一部分,在此任务中,您将设置数据库扩展程序,以便为 AlloyDB 集群完全启用列式引擎功能。

与配置标志不同,您必须通过 psql 客户端连接到实例,才能启用数据库扩展程序。

  1. 返回 alloydb-client shell。psql 客户端应仍处于活动状态。否则,请按照任务 1 中的说明重新连接。

  2. 运行以下查询,确保您已连接到 postgres 数据库。

\c postgres
  1. 运行以下系统查询,查看数据库中已启用的扩展程序的详细信息。
注意:您的扩展程序列表可能会有所不同。 \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)
  1. 如果列表中显示 google_columnar_engine,请跳至下一个任务(任务 5)。如果列表中未显示 google_columnar_engine,请运行以下命令。
CREATE EXTENSION IF NOT EXISTS google_columnar_engine;
  1. 再次运行扩展程序查询,确认 google_columnar_engine 扩展程序已启用。
\dx

任务 5. 测试列式引擎

由于您的主表 (pgbench_accounts) 相对较小,因此您可以直接将其添加到列式引擎以进行评估。在实际部署中,您会利用列式引擎的建议框架自动识别所有表中最常用的列,这些列通过该引擎管理可带来最大收益。

  1. 返回 alloydb-client shell。运行以下查询,将 pgbench_accounts 添加到列式引擎。查询需要几分钟才能完成。
SELECT google_columnar_engine_add('pgbench_accounts');
  1. 接下来,运行您之前运行的同一条说明计划查询,以查看列式引擎的效果。您的值应与示例输出中的值类似,但会因数据生成的随机性而有所不同。
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)
  1. 在结果中,请特别注意规划时间执行时间值。在启用列式引擎后的示例中,规划时间为 2.022 毫秒,而执行时间则为 78.804 毫秒。您的值应与示例输出中的值类似,但会因数据生成的随机性而有所不同。

  2. 在提供的示例中,列式引擎启用前和启用后的执行时间差为 10935.365 毫秒10.9 秒。这相当于执行时间缩短了 141 倍。在启用列式引擎后的示例中,您还会发现,超过 450 万行是使用列式扫描而非核心数据库引擎进行汇总的。

点击检查我的进度,验证已完成以下目标: 测试列式引擎

注意:如果您在完成所有任务后,分数未完全更新,请展开分数检查点框(页面右侧的黄色侧边栏),然后点击每项任务所对应的检查我的进度,从而更新分数。

恭喜!

现在,您已经了解了 AlloyDB 列式引擎的强大功能。

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2025 年 1 月 16 日

上次测试实验的时间:2025 年 12 月 15 日

版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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