本文档提供了有关为在线事务处理 (OLTP) 和在线分析处理 (OLAP) 工作负载调整 AlloyDB for PostgreSQL 实例大小的工作负载和部署建议。
概览
为了帮助您提升数据库性能,AlloyDB for PostgreSQL 提供了以下内置功能:
- 自动内存管理
- 自适应自动执行自动清理
- 经过优化的内置效果设置
- 复制延迟时间较短
- 无中断维护,在扩缩操作期间,主实例的停机时间不到一秒,读取池节点的停机时间为零
为了提高 AlloyDB for PostgreSQL 实例的性能,您需要管理以下内容:
- 正确调整主实例和读取池实例的大小
- 更新影响性能的标志
大小注意事项
在调整 AlloyDB for PostgreSQL 实例的大小之前,请确定以下事项:
- 工作负载类型:OLTP、OLAP 或 HTAP
- 性能要求:延迟时间和吞吐量要求
- 预期数据大小:您计划存储在 AlloyDB for PostgreSQL 中的数据的大小,以及有效数据集的大小
- 工作负载规模:数据大小随时间的推移而增加或增长
OLTP 工作负载
您可以将 AlloyDB for PostgreSQL 数据库部署为可用区实例(单个节点)或高可用性实例(每个可用区有两个节点)。(可选)您还可以在其他区域添加读取池实例和次要集群,以实现地理分布式工作负载或灾难恢复 (DR)。
AlloyDB for PostgreSQL 采用云规模的分布式架构进行部署,并采用分解式计算和存储方案。只要提前写入日志 (WAL) 文件持久保存在区域存储空间上,系统就会立即确认写入,同时将块具体化数据分流到存储空间。
同样,在多层缓存架构中,数据会自动放置在缓冲区缓存、超高速缓存和智能存储引擎之间。由于 AlloyDB for PostgreSQL 中使用的这种多层缓存架构,每秒输入和输出操作 (IOPs) 在 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) |
建议的 max_connections |
---|---|---|---|
2 / 16GB | 最多 1,000 个 | 100 GB 及以下 | 1000 |
4 / 32GB | 最多 2,500 人 | 250 GB 及以下 | 2000 |
8/ 64GB | 最多 4,000 个 | 最多 500GB | 4000 |
16 GB / 128 GB | 最多 8,000 个 | 最多 1 TB | 5000 |
32 GB / 256 GB | 最多 14,000 个 | 最多 3 TB | 5000 |
64 GB / 512 GB | 最多 20,000 个 | 最多 8 TB | 5000 |
96 GB / 768 GB | 不高于 25,000 | 最多 16 TB | 5000 |
128 / 864GB | 大于 20,000 | 最多 32 TB | 5000 |
部署类型
根据您的工作负载,您可以将 AlloyDB for PostgreSQL 部署为仅主实例或主实例与读取池实例。
仅主屏幕
为以下工作负载选择仅主副本部署:
- 写入量大,读取量较低
- 读取量大的查询,写入量较小
- 典型的 OLTP 读写(60-70% 读取,30-40% 写入)。
如需详细了解机器类型,请参阅通用机器尺寸准则。
主实例(具有读取池实例)
如果您选择部署带有读取池的实例主实例,请考虑以下事项:
- 如果您有对延迟时间敏感的读取操作,不妨考虑将读取查询分流到读取池实例,与标准 PostgreSQL 相比,副本延迟时间可缩短 25 倍。您可以在所有只读存储分区实例中配置最多 20 个节点。
- 如果您有多个数据库(例如,同一个实例中的 CRM 或财务数据库),请配置多个读取池实例。采用此策略有助于有效缓存和提升查询性能。
- 您可以根据自己的要求为主实例和读取池实例分配不同的大小。如需详细了解读取池实例的最佳实践,请参阅提高 AlloyDB 性能和可用性的最佳实践。
- 为每个读取池实例添加多个节点,以实现高可用性。
- 在特定读取池实例中选择性启用列式引擎,以提升读取查询性能。这不需要在主实例上启用列式引擎。
不妨考虑使用索引顾问等内置功能来帮助您添加有助于提高查询性能的索引。
OLAP 工作负载
对于 OLAP 工作负载,主要的调整大小指标是查询性能,尤其是需要全表扫描或聚合的查询。AlloyDB for PostgreSQL 包含内置的列式引擎,可帮助加快分析查询速度。默认情况下,启用列式引擎会占用 30% 的内存,并自动使用超快缓存数据。
如需详细了解如何使用 TPC-H 工作负载通过 AlloyDB for PostgreSQL 衡量 OLAP 性能,请参阅 AlloyDB for PostgreSQL for PostgreSQL OLAP 基准测试指南。
部署类型
根据您的工作负载,您可以将 AlloyDB for PostgreSQL 部署为仅主实例或主实例与读取池实例。
仅主屏幕
如果您部署的是主实例,请考虑以下事项:
- 将此部署用于包含分析查询的事务 (HTAP)。
- 启用列式引擎,以帮助处理 OLAP 查询。
- 考虑使用具有 16 个 vCPU 或更多 vCPU 的机器进行部署,以提供更多内存来存储列式数据。
主实例(具有读取池)
如果您部署了包含读取池实例的主实例,请考虑以下事项:
- 如果您有大量写入,并且对延迟时间敏感的分析读取具有低延迟时间要求,请部署启用了高可用性且包含读取池实例的主实例。
- 在运行分析查询的读取池实例中启用列式引擎。
- 如果您有多个数据库(例如,同一个实例中的 CRM 或财务数据库),请配置多个读取池实例。采用此策略有助于有效缓存和提升查询性能。
- 您可以根据自己的要求为主实例和读取池实例分配不同的大小。如需详细了解读取池实例的最佳实践,请参阅提高 AlloyDB 性能和可用性的最佳实践。
- 为每个读取池实例添加多个节点,以实现高可用性。
- 在特定读取池实例中选择性启用列式引擎,以提升读取查询性能。这不需要在主实例上启用列式引擎。
后续步骤
- 了解提升性能和可用性的最佳实践。
- AlloyDB for PostgreSQL for PostgreSQL OLTP 基准测试指南。
- AlloyDB for PostgreSQL for PostgreSQL OLAP 基准测试指南。