本文档针对在线事务处理 (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 大小,请按照以下步骤操作:
- 确定现有工作负载。如果您要从自行管理的 PostgreSQL 或其他商业数据库迁移,则可能已经了解自己现有工作负载的 TPS 值。
- 分析查询。确定工作负载中最关键的查询并确定其性能要求。
- 使用
HammerDB
或pgbench
等工具。这些工具可帮助您对 AlloyDB for PostgreSQL 进行基准测试,并确定机器大小是否能够满足您的 TPS 要求。 - 使用 AlloyDB for PostgreSQL OLTP 基准测试指南。本指南提供了各种 AlloyDB for PostgreSQL 配置的性能数据,可帮助您找到能够满足您的 TPS 要求的配置。
- 选择合适的 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 性能和可用性的最佳实践。
- 为每个读取池实例添加多个节点,以实现高可用性。
- 在特定读取池实例中选择性地启用列式引擎,以提高读取查询性能。不需要在主实例上启用列式引擎。