使用 pgbench 分析 AlloyDB 实例的性能

在本教程中,您将在虚拟私有云 (VPC) 网络上集成 AlloyDB 实例和 Compute Engine 虚拟机实例。然后,您可以在 Compute Engine 虚拟机实例上安装 pgbench,并使用此基准比较工具针对 AlloyDB 实例进行性能测试,从而验证集成情况。

目标

在本教程中,您将学习如何:

  • 为 AlloyDB 实例和 Compute Engine 虚拟机实例创建 VPC 网络,以便实例和虚拟机之间可以安全地进行通信。
  • 创建 AlloyDB 实例和 Compute Engine 虚拟机实例,并为这两个实例分配和配置 VPC 网络。
  • 在 Compute Engine 虚拟机实例上安装 pgbench,针对 AlloyDB 实例运行该工具,并使用该工具针对 AlloyDB 实例执行性能测试。

费用

本教程使用 Google Cloud的收费组件,包括 VPC 网络、AlloyDB 和 Compute Engine。请使用价格计算器根据您的预计使用情况来估算费用。

准备工作

  1. 在 Google Cloud 控制台的项目选择器页面上,选择或创建 Google Cloud 项目。

    转到项目选择器页面

  2. 确保您的 Google Cloud 项目已启用结算功能。了解如何确认您的项目是否已启用结算功能

  3. 启用 VPC 网络、AlloyDB 和 Compute Engine API。

    启用 API

  4. 确保您已为自己的用户账号分配 AlloyDB Admin 角色。

    转到 IAM 页面

创建 VPC 网络

在本部分中,您将为 AlloyDB 实例和 Compute Engine 虚拟机实例创建 VPC 网络,以便实例和虚拟机之间可以安全地进行通信。

  1. 前往 Google Cloud 控制台中的 VPC 网络页面。

    转到“VPC 网络”页面

  2. 点击创建 VPC 网络。随即会出现创建 VPC 网络页面。

  3. 为 VPC 网络的名称输入 my-vpc-network

  4. 子网创建模式部分中,选择自定义选项。

  5. 点击添加子网

  6. 为子网的名称输入 my-subnet

  7. 选择区域,然后为子网输入 IP 地址范围

  8. 点击完成

  9. 点击创建

创建 AlloyDB 实例

在本部分中,您将创建 AlloyDB 实例,并为该实例分配和配置 VPC 网络。

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到集群

  2. 点击创建集群

  3. 按如下方式配置集群:

    1. 基本信息部分的集群 ID 字段中,输入 my-cluster

    2. 密码字段中,输入您想要的任何密码。记下此密码,您将在本教程的后面部分再次使用它。

    3. 位置部分的区域字段中,选择 us-central1 (Iowa)

    4. 数据库版本字段中,保留默认值。

    5. 网络菜单中,选择 my-vpc-network。您在创建 VPC 网络中创建了此 VPC 网络。

    6. 由于您的 VPC 网络尚未初始化专用服务访问通道,请点击设置连接

    7. 在随即显示的创建专用服务连接窗格中:

      1. 选择使用自动分配的 IP 范围选项,让 Google Cloud 在您的网络中选择自动分配的 IP 范围。

      2. 点击继续

      3. 点击创建连接

  4. 按如下方式配置主实例:

    1. 实例 ID 字段中,输入主实例的 ID。

    2. 可用区级可用性下,选择以下选项之一:

      1. 如需创建具有自动故障切换功能的高可用性生产实例,请选择多个可用区(高可用性)

      2. 如需创建不需要高可用性的基本实例,请选择单个可用区

    3. 选择机器类型。

  5. 点击创建集群以同时创建集群和主实例。

  6. 记下 AlloyDB 实例页面上显示的 AlloyDB 实例的专用 IP 地址。您需要此地址来验证 AlloyDB 实例与 Compute Engine 虚拟机实例之间的集成。

创建一个 Compute Engine 虚拟机实例

在本部分中,您将创建一个 Compute Engine 虚拟机实例,并为该实例分配和配置 VPC 网络。

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 点击创建实例

  3. 创建实例页面的名称字段中,输入您要创建的 Compute Engine 虚拟机实例的唯一标识符。在本教程中,在字段中输入 my-compute-engine-vm-instance

  4. 在该页面的访问权限范围部分中,选择授予对所有 Cloud API 的完整访问权限选项。

  5. 展开高级选项,然后完成以下步骤:

    1. 点击网络子标签页。

    2. 点击添加网络接口

    3. 网络菜单中,选择 my-vpc-network。您在创建 VPC 网络中创建了此 VPC 网络。

    4. 点击完成。页面上的网络接口部分会显示两个 VPC 网络:defaultmy-vpc-network

  6. 点击 删除,以删除默认 VPC 网络。

    通过删除默认 VPC 网络,您可以强制 Compute Engine 虚拟机实例使用您在本教程中创建的 VPC 网络。

  7. 点击创建

    创建 Compute Engine 虚拟机实例可能需要几秒钟。之后,该实例会显示在虚拟机实例页面中,且该实例的状态为正在运行(如对勾标记所示)。

验证集成

在本部分中,您将在 Compute Engine 虚拟机实例上安装 pgbench,针对 AlloyDB 实例运行该工具,并使用该工具针对 AlloyDB 实例执行性能测试。

  1. 连接到您的 Compute Engine 虚拟机实例。为此,请点击虚拟机实例右侧的 SSH 菜单,然后选择在浏览器窗口中打开

  2. 在 Compute Engine 虚拟机实例上安装 PostgreSQL 软件包的贡献扩展程序和附加程序。

    sudo apt-get -y install postgresql-contrib
  3. 在 AlloyDB for PostgreSQL 实例上为 pgbench 初始化数据库。例如,使用默认的 postgres 数据库:

    pgbench -i --host=INSTANCE_PRIVATE_IP --port=PORT_NUMBER --username=USERNAME

    替换以下内容:

    • INSTANCE_PRIVATE_IP:AlloyDB 实例的专用 IP 地址。您在创建实例时记下了此 IP 地址。
    • PORT_NUMBER:为 AlloyDB 实例预留的端口号。在本教程中,端口号为 5432
    • USERNAME:AlloyDB 实例的管理员用户名。在本教程中,用户名为 postgres
  4. Password 提示符处,输入 AlloyDB 实例的密码。创建实例时,您要么为其提供了密码,要么让 AlloyDB 为您生成了密码。

  5. 运行不带任何参数的 pgbench 以验证基本功能。

    pgbench --host=INSTANCE_PRIVATE_IP --port=PORT_NUMBER --username=USERNAME
  6. Password 提示符处,输入 AlloyDB 实例的密码。

    您将看到如下所示的输出:

    starting vacuum...end.
    transaction type: <builtin: TPC-B (sort of)>
    scaling factor: 1
    query mode: simple
    number of clients: 1
    number of threads: 1
    number of transactions per client: 10
    number of transactions actually processed: 10/10
    latency average = 3.794 ms
    tps = 263.560171 (including connections establishing)
    tps = 345.375423 (excluding connections establishing)
  7. 使用一些选项来进行有用的测试。一些重要的选项包括 -c(客户端数量)和 --transactions(每个客户端的事务数量)。

    在本教程中,您将针对访问 AlloyDB for PostgreSQL 数据库的 10 个客户端和每个客户端的 100 个事务执行性能测试。

    pgbench --host=INSTANCE_PRIVATE_IP --port=PORT_NUMBER --username=USERNAME -c 10 --transactions=100
  8. Password 提示符处,输入 AlloyDB 实例的密码。

    您将看到如下所示的输出:

    starting vacuum...end.
    transaction type:  TPC-B (sort of)>
    scaling factor: 1
    query mode: simple
    number of clients: 10
    number of threads: 1
    number of transactions per client: 100
    number of transactions actually processed: 1000/1000
    latency average = 36.421 ms
    tps = 274.563444 (including connections establishing)
    tps = 275.733225 (excluding connections establishing)

清理

完成本教程后,您可以清理您创建的资源,以免这些资源占用配额,日后产生费用。

为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。

  1. 使用 Google Cloud 控制台删除项目、AlloyDB 实例、Compute Engine 虚拟机实例和 VPC 网络。

以下部分介绍如何删除或关闭这些资源。

删除项目

若要避免产生费用,最简单的方法是删除您为本教程创建的项目。

  1. 前往 Google Cloud 控制台中的管理资源页面。

    转到“管理资源”页面

  2. 在项目列表中,选择要删除的项目,然后点击删除

  3. 在对话框中输入项目 ID,然后点击关停以删除项目。

删除 AlloyDB 实例

  1. 前往 Google Cloud 控制台中的 AlloyDB 实例页面。

    前往“AlloyDB 实例”页面

  2. 点击 AlloyDB 实例的名称。在本教程中,请点击 my-instance

  3. 点击删除

  4. 在对话框的文本字段中输入 AlloyDB 实例的名称,然后点击删除

删除 Compute Engine 虚拟机实例

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 点击 Compute Engine 虚拟机实例的名称。在本教程中,请点击 my-compute-engine-vm-instance

  3. 点击删除图标。此图标类似于垃圾桶。

  4. 在该对话框中,点击 DELETE

删除 VPC 网络

  1. 前往 Google Cloud 控制台中的 VPC 网络页面。

    转到“VPC 网络”页面

  2. 点击 VPC 网络的名称。在本教程中,请点击 my-vpc-network

  3. 点击删除 VPC 网络

  4. 在该对话框中,点击 DELETE