

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

# 优化 Amazon Neptune 批量加载
<a name="bulk-load-optimize"></a>

使用以下策略将 Neptune 批量加载的加载时间保持在最低限度：
+ **清理您的数据：**
  + 在加载之前，请务必将数据转换为[支持的数据格式](bulk-load-tutorial-format.md)。
  + 删除所有重复项或已知错误。
  + 尽可能减少唯一谓词（例如边缘和顶点的属性）的数量。
+ **优化您的文件：**
  + 如果您从 Amazon S3 桶加载大型文件（例如 CSV 文件），则加载程序会将它们解析为可以并行加载的块，从而为您管理并发性。使用非常大量的小文件可能会减慢此过程。
  +  如果您从 Amazon S3 前缀加载多个文件，加载程序会自动先加载顶点文件，然后再加载边缘文件。但是，如果您知道将仅加载边缘文件，则可以将 `edgeOnlyLoad` 设置为 `TRUE` 以跳过第一轮，在这一轮中，系统会扫描所有文件来确定其内容（顶点或边缘），以便在加载任何边缘文件之前先加载找到的任何顶点文件。这可以显著缩短加载时间，尤其是在涉及许多边缘文件时。如果某些顶点文件也在相同的 Amazon S3 前缀（`source` 参数）中，则系统将加载这些文件，但与其他文件相比，没有任何排序保证。此外，如果某些 `from` 或 `to` 顶点不在数据库中，则边缘插入可能会报告错误并显示消息 `FROM_OR_TO_VERTEX_ARE_MISSING`。最佳实践是将节点和边缘放在单独的 Amazon S3 前缀中。
+ **检查您的加载程序设置：**
  + 如果在加载期间不需要执行任何其它操作，请使用 [`OVERSUBSCRIBE``parallelism`](load-api-reference-load.md#load-api-reference-load-syntax) 参数。此参数设置使批量加载程序在运行时使用所有可用的 CPU 资源。在限制允许的情况下，通常需要占用 60%-70% 的 CPU 容量才能保持操作的运行速度。 I/O 
**注意**  
如果 `parallelism` 设置为 `OVERSUBSCRIBE` 或 `HIGH`（默认设置），则在加载 openCypher 数据时，线程可能会遇到争用条件和死锁，从而导致 `LOAD_DATA_DEADLOCK` 错误。在这种情况下，请将 `parallelism` 设为较低的设置并重试加载。
  + 如果您的加载任务将包含多个加载请求，请使用 `queueRequest` 参数。将 `queueRequest` 设置为 `TRUE` 允许 Neptune 对您的请求进行排队，这样您就不必等到一个请求完成后再发出另一个请求。
  +  如果您的加载请求正在排队，则可以使用 `dependencies` 参数设置依赖级别，这样一个任务的失败就会导致相关任务失败。这样可以防止加载的数据出现不一致。
  + 如果加载任务将涉及更新先前加载的值，请务必将 `updateSingleCardinalityProperties` 参数设置为 `TRUE`。如果不这样做，加载程序会将更新现有单个基数值的尝试视为错误。对于 Gremlin 数据，还会在属性列标题中指定基数（请参阅[属性列标题](bulk-load-tutorial-format-gremlin.md#bulk-load-tutorial-format-gremlin-propheaders)）。
**注意**  
`updateSingleCardinalityProperties` 参数不适用于资源描述框架 (RDF) 数据。
  + 您可以使用 `failOnError` 参数来确定当遇到错误时批量加载操作是失败还是继续。此外，您还可以使用 `mode` 参数来确保加载任务从上一个任务失败的地方恢复加载，而不是重新加载已经加载的数据。
+ **纵向扩展** - 在批量加载之前，将数据库集群的写入器实例设置为最大大小。请注意，如果执行此操作，则必须同时纵向扩展数据库集群中的所有只读副本实例，或者在加载完数据之前将其移除。

   批量加载完成后，请务必再次缩减写入器实例。

**重要**  
如果您在批量加载期间由于复制滞后而经历了重复重启只读副本的循环，则您的副本可能无法跟上数据库集群中写入器的速度。要么将读取器扩展到比写入器大，要么在批量加载期间暂时将它们移除，然后在完成后重新创建。

有关设置加载程序请求参数的更多详细信息，请参阅[请求参数](load-api-reference-load.md#load-api-reference-load-parameters)。