容量调整和部署建议

本文档针对在线事务处理 (OLTP) 和在线分析处理 (OLAP) 工作负载,提供了有关调整 AlloyDB for PostgreSQL 实例大小方面的工作负载和部署建议。

概览

为了帮助您获得更好的数据库性能,AlloyDB for PostgreSQL 提供了以下内置功能:

  • 自动内存管理
  • 自适应自动完全清理 (autovacuum)
  • 经过优化的内置性能设置
  • 缩短复制延迟时间
  • 在扩缩操作期间,可实现非中断性维护,主实例的停机时间在亚秒级,而读取池节点的停机时间为零

为了提高性能,对 AlloyDB for PostgreSQL 实例进行了调优,包括对以下方面的管理:

  • 正确调整主实例和读取池实例的大小
  • 更新影响性能的标志

大小调整注意事项

在调整 AlloyDB for PostgreSQL 实例的大小之前,请确定以下事项:

  • 工作负载类型:OLTP、OLAP 或 HTAP
  • 性能要求:延迟时间和吞吐量要求
  • 预期数据大小:您计划在 AlloyDB for PostgreSQL 中存储的数据大小,以及活跃数据集大小
  • 工作负载规模:数据大小随时间推移而增加或增长

OLTP 工作负载

您可以将 AlloyDB for PostgreSQL 数据库部署为可用区级实例(单节点)或高可用性实例(每个可用区两个节点)。您还可以选择添加读取池实例以及在另一个区域中添加次要集群,以便实现分布于不同地理位置的工作负载或支持灾难恢复 (DR)。

AlloyDB for PostgreSQL 采用云规模分布式架构进行部署,计算和存储系统相互分离。在预写式日志 (WAL) 文件保留在区域级存储空间中后,系统会立即确认写入操作,同时将块具体化分流到存储空间。

同样,借助多层缓存架构,数据会自动放置在缓冲区缓存、超快缓存和智能存储引擎中。由于 AlloyDB for PostgreSQL 中使用了这种多层缓存架构,因此相比其他数据库系统,每秒输入/输出操作数 (IOP) 在 AlloyDB for PostgreSQL 上下文中无关紧要。

不过,可以使用每秒事务数 (TPS)/每分钟事务数 (TPM) 进行有意义的对比,从而了解 AlloyDB for PostgreSQL 可以处理的数据量。

主要衡量指标是 TPS。如需估算所需的 AlloyDB for PostgreSQL 大小,请按照以下步骤操作:

  1. 确定现有工作负载。如果您要从自行管理的 PostgreSQL 或其他商业数据库迁移,则可能已经了解自己现有工作负载的 TPS 值。
  2. 分析查询。确定工作负载中最关键的查询并确定其性能要求。
  3. 使用 HammerDBpgbench 等工具。这些工具可帮助您对 AlloyDB for PostgreSQL 进行基准测试,并确定机器大小是否能够满足您的 TPS 要求。
  4. 使用 AlloyDB for PostgreSQL OLTP 基准测试指南。本指南提供了各种 AlloyDB for PostgreSQL 配置的性能数据,可帮助您找到能够满足您的 TPS 要求的配置。
  5. 选择合适的 AlloyDB for PostgreSQL 大小。请考虑您当前的数据规模及未来的增长预期。

机器大小指南

下表显示了 TPC-C 基准测试数据方面的建议,该数据的读写比约为 65% 的读取和 35% 的写入。在确定 AlloyDB for PostgreSQL 实例的大小时,您必须力求使稳定状态下的 CPU 利用率保持在 60-70% 左右,以避免操作系统调度开销。这样,客户端应用在资源利用率出现激增时,仍保有一定余量。

vCPU/内存 建议的每秒事务数
范围(30% 缓存率)
建议的工作
数据大小(总大小不超过 128 TB)
建议的连接数上限
2 / 16GB 不超过 1,000 100 GB 及以下 1000
4 / 32GB 不超过 2,500 不超过 250GB 2000
8/ 64GB 不超过 4,000 不超过 500GB 4000
16 / 128GB 不超过 8,000 不超过 1TB 5000
32 / 256GB 不超过 14,000 不超过 3TB 5000
64 / 512GB 不超过 20,000 不超过 8TB 5000
96 / 768GB 不超过 25,000 不超过 16TB 5000
128 / 864GB 大于 20,000 不超过 32TB 5000

部署类型

您可以根据自己的工作负载将 AlloyDB for PostgreSQL 部署为仅主实例或部署为包含读取池实例的主实例。

仅主实例

对于以下工作负载,请选择仅主实例部署类型:

  • 写入密集型,中等量或少量读取操作
  • 读取密集型查询,少量写入操作
  • 典型的 OLTP 读写工作负载(60-70% 读取,30-40% 写入)。

如需详细了解机器类型,请参阅通用机器大小指南

包含读取池实例的主实例

如果您选择部署包含读取池实例的主实例,请考虑以下事项:

  • 如果您有对延迟时间较为敏感的读取操作,请考虑将读取查询分流到读取池实例。您最多可以在所有读取池实例中配置 20 个节点。如需了解详情,请参阅创建读取池实例
  • 如果您有多个数据库(例如,在同一实例中有 CRM 数据库及财务数据库),请配置多个读取池实例。使用此策略有助于实现高效的缓存和查询性能。
  • 您可以根据自己的要求,为主实例和读取池实例设置不同的大小。如需详细了解读取池实例的最佳实践,请参阅提高 AlloyDB 性能和可用性的最佳实践
  • 为每个读取池实例添加多个节点,以实现高可用性。
  • 在特定读取池实例中选择性地启用列式引擎,以提高读取查询性能。不需要在主实例上启用列式引擎。

考虑使用索引顾问等内置功能来帮助您添加可提高查询性能的索引。

OLAP 工作负载

对于 OLAP 工作负载,主要的大小设置指标是查询性能,尤其是对于需要进行全表扫描或执行聚合操作的查询。AlloyDB for PostgreSQL 包含一个内置的列式引擎,可帮助加快分析查询的速度。启用列式引擎默认会消耗 30% 的内存,并会自动使用超快速缓存数据。

如需详细了解如何使用 TPC-H 工作负载衡量 AlloyDB for PostgreSQL 的 OLAP 性能,请参阅 AlloyDB for PostgreSQL OLAP 基准测试指南

部署类型

您可以根据自己的工作负载将 AlloyDB for PostgreSQL 部署为仅主实例或部署为包含读取池实例的主实例。

仅主实例

如果您选择仅主实例部署类型,请考虑以下事项:

  • 此部署适用于同时包含事务查询和分析查询 (HTAP) 的工作负载。
  • 启用列式引擎以帮助处理 OLAP 查询。
  • 考虑部署拥有 16 个或更多 vCPU 的机器,以提供更多内存来存储列式数据。

包含读取池的主实例

如果您选择部署包含读取池实例的主实例,请考虑以下事项:

  • 如果您有大量写入操作,并且有对延迟时间较为敏感的分析型读取操作(即要求延迟时间较低),那么可以部署启用了高可用性且包含读取池实例的主实例。
  • 在运行分析查询的读取池实例中启用列式引擎。
  • 如果您有多个数据库(例如,在同一实例中有 CRM 数据库及财务数据库),请配置多个读取池实例。使用此策略有助于实现高效的缓存和查询性能。
  • 您可以根据自己的要求,为主实例和读取池实例设置不同的大小。如需详细了解读取池实例的最佳实践,请参阅提高 AlloyDB 性能和可用性的最佳实践
  • 为每个读取池实例添加多个节点,以实现高可用性。
  • 在特定读取池实例中选择性地启用列式引擎,以提高读取查询性能。不需要在主实例上启用列式引擎。

后续步骤