选择正确的 Neptune 数据库实例类型 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

选择正确的 Neptune 数据库实例类型

Amazon Neptune 提供许多不同的实例大小和系列。它们提供适合不同图形工作负载的不同功能。本部分旨在帮助您选择最适合您需求的实例类型。

有关这些系列中每种实例类型的定价,请参阅 Neptune 定价页面

实例资源分配概述

Neptune 中使用的每种 Amazon EC2 实例类型和大小都提供定义的计算量 (vCPUs) 和系统内存。Neptune 的主存储位于集群中数据库实例的外部,这使得计算和存储容量可以相互独立扩展。

本节重点介绍如何扩展计算资源,以及每个不同实例系列之间的差异。

在所有实例系列中,分配 vCPU 资源以支持每个 vCPU 的两 (2) 个查询执行线程。这种支持由实例大小决定。在确定给定 Neptune 数据库实例的适当大小时,您需要考虑应用程序的可能并发性和查询的平均延迟。您可以按如下方式估算所需的 vCPUs 数量,其中延迟是以秒为单位的平均查询延迟来衡量的,并发度是以每秒的目标查询数来衡量的:

用于估算实例所需的 vCPUs 的公式
注意

在某些情况下,使用 DFE 查询引擎的 SPARQL 查询、OpencyPher 查询和 Gremlin 读取查询可以为每个查询使用多个执行线程。在最初调整数据库集群的大小时,首先假设每个查询每次执行将消耗一个执行线程,如果您观察到查询队列中存在背压,则扩大规模。这可以通过使用/gremlin/status/oc/status、或/sparql/status API 来观察,也可以使用MainRequestsPendingRequestsQueue CloudWatch 指标进行观察。

每个实例的系统内存分为两个主要分配:缓冲池缓存和查询执行线程内存。

实例中大约三分之二的可用内存分配给缓冲池缓存。缓冲池缓存用于缓存最近使用的图形组件,以便更快地访问重复访问这些组件的查询。系统内存量较大的实例具有较大的缓冲池缓存,可以在本地存储更多的图形。用户可以通过监控中可用的缓冲区缓存命中和未命中指标来调整适当数量的缓冲池缓存 CloudWatch。

如果缓存命中率持续降至 99.9% 以下,则可能需要增加实例的大小。这表明缓冲池不够大,而且引擎从底层存储卷提取数据的频率超过了效率。

剩余的三分之一的系统内存均匀地分布在查询执行线程中,还有一些内存留给操作系统,还有一个小型的动态池供线程根据需要使用。每个线程的可用内存从一个实例大小略微增加到下一个实例大小,直至一个8xl实例类型,在该大小下,每个线程分配的内存将达到最大值。

当你遇到OutOfMemoryException (OOM) 时,是时候添加更多线程内存了。当一个线程需要的内存超过分配给它的最大内存时,就会出现 OOM 异常(这与整个实例耗尽内存不同)。

t3t4g实例类型

ant3 dt4g 系列实例为开始使用图形数据库以及初始开发和测试提供了低成本选项。这些实例有资格享受 Neptune 免费套餐优惠,该优惠允许新客户在独立Amazon账户中或在具有整合账单的Amazon组织(付款人账户)下累积的前 750 个实例小时内免费使用 Neptune。

t3t4g实例仅在中等大小配置(t3.mediumt4g.medium)中提供。

由于这些实例的资源非常有限,因此不建议将其用于测试查询执行时间或整体数据库性能。要评估查询性能,请升级到其他实例系列之一。

r4实例类型系列

已弃用 — 该r4系列是在 2018 年 Neptune 推出时提供的,但现在更新的实例类型提供了更好的性价比。从引擎版本 1.1.0.0 开始,Neptune 不再支持r4实例类型。

r5实例类型系列

r5系列包含经过内存优化的实例类型,适用于大多数图形用例。该r5系列包含从到的r5.large实例类型r5.24xlarge。随着规模的增加,它们的计算性能会线性扩展。例如,一个r5.xlarge(4 个 vCPUs 和 32GiB 内存)的 vCPUs 和内存是r5.large a(2 个 vCPUs 和 16GiB 内存)的两倍,一个r5.2xlarge(8 个 vCPUs 和 64GiB 内存)的 vCPUs 和内存是 a 的两倍r5.xlarge。您可以预期查询性能会随着计算容量而直接扩展到r5.12xlarge实例类型。

r5实例系列采用 2 插槽英特尔 CPU 架构。r5.12xlarge和较小的类型使用单插槽和该单插槽处理器拥有的系统内存。r5.16xlarger5.24xlarge类型同时使用插槽和可用内存。由于双插槽架构中的两个物理处理器之间需要一些内存管理开销,因此从 a 扩展r5.12xlarge到 ar5.16xlarge 或 orr5.24xlarge 实例类型所获得的性能提升并不像在较小规模下向上扩展那样线性。

r5d实例类型系列

Neptune 具有查找缓存功能,可用于提高需要获取和返回大量属性值和文字的查询的性能。此功能主要由需要返回许多属性的查询的客户使用。查找缓存通过在本地获取这些属性值,而不是在 Neptune 索引存储中一遍又一遍地查找每个属性值,从而提高了这些查询的性能。

查找缓存是在r5d实例类型上使用连接到 NVMe 的 EBS 卷实现的。它是使用集群的参数组启用的。当从 Neptune 索引存储中提取数据时,属性值和 RDF 文字将缓存在此 NVMe 卷中。

如果您不需要查找缓存功能,请使用标准r5实例类型而不是r5d,以避免更高的成本r5d

r5d系列的实例类型与该r5系列的大小相同,从r5d.large到不等r5d.24xlarge

r6g实例类型系列

Amazon开发了自己的名为 G raviton的基于ARM的处理器,该处理器比英特尔和AMD的同类处理器具有更好的性价比。该r6g系列使用 Graviton2 处理器。在我们的测试中,Graviton2 处理器为 OLTP 风格(受限)图形查询提供了 10-20% 的性能提升。但是,由于内存分页性能稍差,Graviton2处理器上的更大、类似于OLAP的查询的性能可能略低于英特尔处理器的性能。

还需要注意的是,该r6g系列采用单插槽架构,这意味着性能会随着计算容量从 ar6g.larger6g.16xlarge a(该系列中最大的类型)进行线性扩展。

x2g实例类型系列

当实例的缓冲池缓存较大时,一些图形用例的性能会更好。该x2g系列的推出是为了更好地支持这些用例。该x2g系列 memory-to-v的 CPU 比率高于 Or5 Rr6g 系列。这些x2g实例还使用 Graviton2 处理器,具有许多与r6g实例类型相同的性能特征,还有更大的缓冲池缓存。

如果您是r5 CPU 利用率低且缓冲池缓存丢失率高的r6g实例类型,请尝试改用x2g系列。这样,您无需为更多 CPU 容量付费即可获得所需的额外内存。

serverless 实例类型

Neptune Serverless 功能可以根据工作负载的资源需求动态扩展实例大小。Neptune Serverless 允许您为数据库集群中的实例设置计算容量的下限和上限(以 Neptune 容量单位衡量),而不是计算应用程序需要多少 vCPUs。通过使用无服务器实例而不是预置实例,可以优化利用率不同的工作负载的成本。

您可以在同一个数据库集群中设置预置实例和无服务器实例,以实现最佳性价比配置。