Neptune 无服务器数据库集群和实例的其它配置 - Amazon Neptune

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Neptune 无服务器数据库集群和实例的其它配置

除了为 Neptune 无服务器数据库集群设置最小和最大容量外,还有其它一些配置选项需要考虑。

在数据库集群中组合无服务器实例和预调配实例

数据库集群不必仅是无服务器的,您可以创建无服务器实例和预调配实例的组合(混合配置)。

例如,假设您需要的写容量比无服务器实例中可用的写容量更多。在这种情况下,您可以使用非常大的预调配写入器来设置集群,但对于读取器仍然使用无服务器实例。

或者,假设集群上的写入工作负载会变化,但读取工作负载保持稳定。在这种情况下,您可以为集群设置一个无服务器写入器和一个或多个预调配读取器。

有关如何创建混合配置数据库集群的信息,请参阅使用 Amazon Neptune 无服务器

为 Neptune 无服务器实例设置提升层

对于包含多个无服务器实例或混用预调配实例和无服务器实例的集群,请注意每个无服务器实例的提升层设置。此设置控制的无服务器数据库实例行为比预调配数据库实例更多。

在中 AWS Management Console,您可以使用 “创建数据库”、“修改实例” 和 “添加读者” 页面上的 “其他配置” 下的 “故障转移” 优先级来指定此设置。您可以在数据库页面上可选的优先级层中看到现有实例的这个属性。还可以在数据库集群或实例的详细信息页面上看到此属性。

对于预调配实例,0–15 层的选择仅决定在失效转移操作期间 Neptune 选择将读取器实例提升为写入器的顺序。对于 Neptune 无服务器读取器实例,层编号还决定实例是纵向扩展以匹配写入器实例的容量,还是仅根据自己的工作负载独立于写入器实例的容量进行扩展。

第 0 层或第 1 层的 Neptune 无服务器读取器实例的最小容量至少与写入器实例一样高,这样它们就可以在失效转移时从写入器手中接管。如果写入器是预调配实例,Neptune 估计等效的无服务器容量,并将该估计值用作无服务器读取器实例的最小容量。

第 2-15 层中的 Neptune 无服务器读取器实例对其最小容量没有这样的限制,并且独立于写入器进行扩展。当它们处于空闲状态时,它们会缩小到集群容量范围内指定的最小NCU值。但是,如果读取工作负载迅速激增,这可能会导致问题。

使读取器容量与写入器容量保持一致

要记住的一件重要事情是,您要确保读取器实例能够跟上写入器实例的步伐,以防止复制延迟过大。在以下两种情况下,这尤其令人担忧,其中无服务器读取器实例不会自动横向缩减以与写入器实例同步:

  • 当您的写入器为预调配,而读取器为无服务器时。

  • 当写入器为无服务器,而无服务器读取器处于提升层 2-15 时。

在这两种情况下,都应将最小无服务器容量设置为与预期的写入器容量相匹配,以确保读取器操作不会超时和可能导致重启。对于预调配的写入器实例,请将最小容量设置为与预调配实例的最小容量相匹配。对于无服务器写入器,可能更难预测最佳设置。

由于实例容量范围是在集群级设置的,因此所有无服务器实例都由相同的最小和最大容量设置控制。第 0 层和第 1 层中的读取器实例的扩展与写入器实例同步,但提升层 2-15 中的实例彼此独立且独立于写入器实例进行扩展,具体取决于它们的工作负载。如果您将最小容量设置得过低,则第 2 层至第 15 层的空闲实例可能会缩减得太低,无法以足够快的速度再次纵向扩展以应对写入器活动的突然激增。

避免将超时值设置得过高

如果您在无服务器实例上设置的查询超时值过高,可能会产生意想不到的成本。

如果没有合理的超时设置,您可能会无意中发出一个查询,该查询需要强大、昂贵的实例类型,并且保持运行很长时间,从而产生您意想不到的成本。您可以通过使用查询超时值来避免这种情况,该值可以容纳您的大多数查询,并且只会导致长时间运行的查询意外超时。

对于使用参数设置的常规查询超时值和使用查询提示设置的每个查询的超时值,都是如此。

优化 Neptune 无服务器配置

如果 Neptune 无服务器数据库集群未根据其正在运行的工作负载进行调整,您可能会注意到它没有以最佳方式运行。您可以调整最小和/或最大容量设置,使其可以在不遇到内存问题的情况下进行扩展。

  • 增加集群的最小容量设置。这可以纠正空闲实例缩减到内存少于应用程序和所启用的特征所需容量的情况。

  • 增加集群的最大容量设置。这可以纠正繁忙的数据库无法纵向扩展到具有足够内存的容量来处理工作负载和任何启用的内存密集型特征的情况。

  • 更改相关实例上的工作负载。例如,您可以将读取器数据库实例添加到集群中,以便将读取负载分布到更多数实例中。

  • 调整应用程序的查询,使其使用更少的资源。

  • 尝试使用大于 Neptune Serverless 中NCUs可用的最大值的预配置实例,看看它是否更适合内存CPU和工作负载要求。