本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Neptune 替代查询引擎 (DFE)
Amazon Neptune 有一个名为 DFE 的替代查询引擎,它比原来的 Neptune 引擎更有效地使用数据库实例资源,例如 CPU 内核、内存和 I/O。
注意
对于大型数据集,DFE 引擎可能无法在 t3 实例上正常运行。
DFE 引擎运行 SPARQL、Gremlin 和 OpencyPher 查询,支持多种计划类型,包括左深度计划、浓密计划和混合计划类型。计划运算符可以调用计算操作(在预留的一组计算内核上运行)和 I/O 操作,后者在 I/O 线程池中各自的线程上运行。
DFE 使用有关您的 Neptune 图形数据的预生成的统计数据来就如何构造查询做出明智的决策。有关如何生成这些统计数据的信息,请参见DFE 统计数据。
计划类型和使用的计算线程数是根据预先生成的统计数据和 Neptune 头节点中的可用资源自动选择的。对于具有内部计算并行性的计划,结果顺序不是预先确定的。
控制 Neptune DFE 引擎的使用位置
默认情况下,neptune_dfe_query_engine实例的实例参数设置为,这会导致 DFE 引擎仅用于 OpencyPher 查询以及明确包含设置为的查询提示的 Gremlin 和 SPARQL 查询。viaQueryHint
useDFE
true
通过将neptune_dfe_query_engine
实例参数设置为,您可以完全启用 DFE 引擎,以便尽可能使用它。enabled
您也可以通过添加特定 Gremlin 查询或 SPAR useDFE QL 查询的查询提示来禁用 DFE。此查询提示使您可以防止 DFE 执行该特定查询。
您可以使用实例状态调用来确定实例中是否启用了 DFE,如下所示:
curl -G https://
your-neptune-endpoint
:port
/status
然后,状态响应指定 DFE 是否已启用:
{ "status":"healthy", "startTime":"Wed Dec 29 02:29:24 UTC 2021", "dbEngineVersion":"development", "role":"writer", "dfeQueryEngine":"viaQueryHint", "gremlin":{"version":"tinkerpop-3.5.2"}, "sparql":{"version":"sparql-1.1"}, "opencypher":{"version":"Neptune-9.0.20190305-1.0"}, "labMode":{ "ObjectIndex":"disabled", "ReadWriteConflictDetection":"enabled" }, "features":{ "ResultCache":{"status":"disabled"}, "IAMAuthentication":"disabled", "Streams":"disabled", "AuditLog":"disabled" }, "settings":{"clusterQueryTimeoutInMs":"120000"} }
Gremlin explain
和profile
结果告诉你 DFE 是否正在执行查询。参见Grem explain lin 报告中包含的信息原文explain
DFE 报道 profile和原文profile
。
同样,SPARQL 会explain
告诉你 DFE 是否正在执行 SPARQL 查询。有关更多DFENode 运算符详细信息,请参阅启用 DFE 时的 SPARQL explain 输出示例和。
Neptune DFE 支持的查询结构
目前,Neptune DFE 支持 SPARQL 和 Gremlin 查询结构的子集。
对于 SPARQL 来说,这是连词基本
对于 Gremlin 来说,它通常是包含遍历链的查询子集,这些遍历链不包含一些更复杂的步骤。
您可以通过以下方式了解您的一个查询是全部还是部分由 DFE 执行:
-
在 Gremlin 中
explain
,profile
结果会告诉你 DFE 正在执行查询的哪些部分(如果有)。参见Grem explain lin 报告中包含的信息原文explain
DFE 报道 profile和原文profile
。另请参阅使用和优化 Gremlin 查询 explainprofile。有关 Neptune 引擎对各个 Gremlin 步骤的支持的详细信息,请参见。Gremlin 步骤支持
同样,SPARQL 会
explain
告诉你 DFE 是否正在执行 SPARQL 查询。有关更多DFENode 运算符详细信息,请参阅启用 DFE 时的 SPARQL explain 输出示例和。