选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

PERF04-BP02 评估可用的选项 - AWS Well-Architected Framework

PERF04-BP02 评估可用的选项

在选择数据管理解决方案之前,需要了解可用的数据库选项及其如何优化性能。使用负载测试确定与您的工作负载相关的重要数据库指标。在研究数据库选项时,要考虑各种方面,如参数组、存储选项、内存、计算、只读副本、最终一致性、连接池和缓存选项。尝试使用这些不同的配置选项来改进指标。

期望结果: 基于数据类型,工作负载可以使用一个或多个数据库解决方案。数据库功能和优势与数据特征、访问模式和工作负载要求完美匹配。要优化您的数据库性能和成本,您必须评估数据访问模式以确定适当的数据库选项。评估可接受的查询时间,以确保选定的数据库选项可以满足要求。

常见反模式:

  • 未识别数据访问模式。

  • 不了解所选数据管理解决方案的配置选项。

  • 仅依赖于增加实例大小,而不考虑其他可用的配置选项。

  • 不测试所选解决方案的扩展特征。

建立此最佳实践的好处: 通过探索和试用数据库选项,您也许能够降低基础设施成本,提高性能和可扩展性,并减少维护工作负载所需的工作量。

未建立这种最佳实践的情况下暴露的风险等级:

  • 必须针对 一刀切类型的 数据库进行优化意味着做出不必要的妥协。

  • 由于没有配置数据库解决方案以匹配流量模式,导致成本增加。

  • 扩展问题可能会导致运维问题。

  • 数据的保护级别可能达不到要求。

实施指导

了解您的工作负载数据特征,以便配置数据库选项。运行负载测试以确定您的关键性能指标和瓶颈。使用这些特征和指标来评估数据库选项并尝试使用不同的配置。

AWS 服务 Amazon RDS、Amazon Aurora Amazon DynamoDB Amazon DocumentDB Amazon ElastiCache Amazon Neptune Amazon Timestream Amazon Keyspaces Amazon QLDB
扩展计算 增加实例大小,Aurora 无服务器实例自动扩展以响应负载变化 按需容量模式下的自动读/写扩展,或预置容量模式下的预置读/写容量自动扩展 增加实例大小 增加实例大小,将节点添加到集群 增加实例大小 自动扩展以调整容量 按需容量模式下的自动读/写扩展,或预置容量模式下的预置读/写容量自动扩展 自动扩展以调整容量
横向扩展读取 所有引擎都支持只读副本。Aurora 支持只读副本实例的自动扩展 增加预置的读取容量单位 只读副本 只读副本 只读副本。支持只读副本实例的自动扩展 自动扩展 增加预置的读取容量单位 自动纵向扩展到规定的并发限制
横向扩展写操作 增加实例大小,批处理应用程序中的写操作,或在数据库前面添加队列。通过跨多个实例的应用程序级分片进行横向扩展 增加预置的写入容量单位。确保最佳分区键,以防止分区级写操作节流 增加主实例大小 在集群模式下使用 Redis 跨分片分布写操作 增加实例大小 扩展时,写请求可能会受到限制。如果遇到节流异常,请继续以相同(或更高)吞吐量发送数据,以自动扩展。批量写入以减少并发写入请求 增加预置的写入容量单位。确保最佳分区键,以防止分区级写操作节流 自动纵向扩展到规定的并发限制
引擎配置 参数组 不适用 参数组 参数组 参数组 不适用 不适用 不适用
缓存 内存中的缓存,可通过参数组进行配置。与 ElastiCache for Redis 等专用缓存结合使用,分流对经常访问项的请求 DAX 完全托管式缓存可用 内存中的缓存。(可选)与 ElastiCache for Redis 等专用缓存结合使用,分流对经常访问项的请求 主要功能是缓存 使用查询结果缓存来缓存只读查询的结果 Timestream 有两个存储层;其中之一是高性能内存中存储层 部署单独的专用缓存(如 ElastiCache for Redis),分流对经常访问项的请求 不适用
高可用性/灾难恢复 对于生产工作负载,推荐的配置是在第二个可用区中运行备用实例,以在一个区域内提供弹性。  对于跨区域的弹性,可以使用 Aurora 全球数据库 在一个区域内高度可用。可以使用 DynamoDB 全局表跨区域复制表 跨可用区创建多个实例以实现可用性。  快照可以跨区域共享,集群可以使用 DMS 进行复制,用于提供跨区域复制/灾难恢复 对于生产集群,推荐的配置是在备用可用区中至少创建一个节点。  ElastiCache 全局数据存储可用于跨区域复制集群。 其他可用区中的只读副本用作失效转移目标。  快照可以跨区域共享,集群可以使用 Neptune 流进行复制,用于在两个不同区域的两个集群之间复制数据。 在一个区域内高度可用。跨区域复制需要使用 Timestream SDK 进行自定义应用程序开发 在一个区域内高度可用。  跨区域复制需要自定义应用程序逻辑或第三方工具 在一个区域内高度可用。  要跨区域复制,请将 Amazon QLDB 日志的内容导出到 S3 存储桶,并配置该存储桶以进行跨区域复制。

实施步骤

  1. 哪些配置选项可用于选定的数据库?

    1. 利用 Amazon RDS 和 Aurora 的参数组,您可以调整常见的数据库引擎级别设置(例如为缓存分配的内存),或调整数据库的时区

    2. 对于预置的数据库服务(如 Amazon RDS、Aurora、Neptune、Amazon DocumentDB)以及在 Amazon EC2 上部署的数据库服务,您可以更改实例类型、预置存储和添加只读副本。

    3. DynamoDB 允许您指定两种容量模式:按需和预置。考虑到不同的工作负载,您可以在这两种模式之间进行更改,并在预置模式下随时增加所分配的容量。

  2. 工作负载是否包含大量的读取或写入操作? 

    1. 哪些解决方案可用于分流读取操作(只读副本、缓存等)? 

      1. 对于 DynamoDB 表,您可以使用 DAX 缓存功能来分流读取操作。

      2. 对于关系数据库,您可以创建一个 ElastiCache for Redis 集群,并将应用程序配置为首先从缓存中读取,并在请求的项目不存在时返回到数据库。

      3. 关系数据库(如 Amazon RDS 和 Aurora)以及预置的 NoSQL 数据库(如 Neptune 和 Amazon DocumentDB)全部支持添加只读副本,以分流工作负载的读取部分。

      4. DynamoDB 等无服务器数据库将自动扩展。确保您预置了足够的读取容量单位(RCU,Read Capacity Unit)来处理工作负载。

    2. 哪些解决方案可用于扩展写入操作(分区键分片、引入队列等)?

      1. 对于关系数据库,您可以增加实例的大小以适应增加的工作负载,或增加预调配 IOPS 以增加底层存储的吞吐量。

        • 您还可以在数据库前面引入队列,而不是直接写入数据库。此模式允许您将摄取操作与数据库解耦,并控制流量,这样数据库就不会过载。 

        • 对写入请求进行批处理,而不是创建许多短期事务,这样有助于提高有大量写入的关系数据库的吞吐量。

      2. 像 DynamoDB 这样的无服务器数据库可以自动扩展写入吞吐量,也可以根据容量模式调整预置的写入容量单位(WCU,Write Capacity Unit)。 

        • 但是,当达到给定分区键的吞吐量限制时,仍然会遇到 分区问题。这可以通过选择更均匀分布的分区键或对分区键进行写分片来缓解。 

  3. 当前或预期的每秒事务数(TPS)峰值是多少? 使用此流量和此流量 +X% 进行测试,以了解扩展特征。

    1. 适用于 PostgreSQL 的 pg_bench 等原生工具可用于对数据库进行压力测试,以了解瓶颈和扩展特征。

    2. 应该捕获类似生产的流量,以便重放这些流量,从而在合成工作负载之外模拟真实世界的情况。

  4. 如果使用无服务器或弹性可扩展计算,请测试此扩展对数据库的影响。如果合适,引入连接管理或池技术以降低对数据库的影响。 

    1. RDS 代理可与 Amazon RDS 和 Aurora 结合使用,以管理与数据库的连接。 

    2. DynamoDB 等无服务器数据库没有与之关联的连接,但会考虑预置容量和自动扩展策略来处理负载峰值。

  5. 负载是否可预测,是否会出现负载峰值和不活动时段?

    1. 如果有一段时间处于不活动状态,请考虑在这段时间内缩减预置的容量或实例大小。Aurora Serverless V2 将根据负载自动纵向扩展和缩减。

    2. 对于非生产实例,请考虑在非工作时间暂停或停止这些实例。

  6. 您是否需要根据访问模式和数据特征对数据模型进行分段和拆分?

    1. 考虑使用 AWS DMS 或 AWS SCT 将您的数据移动到其他服务。

实施计划的工作量级别: 

要建立此最佳实践,您必须了解当前的数据特征和指标。收集这些指标,建立基线,然后使用这些指标来确定理想的数据库配置选项,这需要 中等 工作量。这最好通过负载测试和实验来验证。

资源

相关文档:

相关视频:

相关示例:

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。