Neptune 字典垃圾回收 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Neptune 字典垃圾回收

Neptune 支持字典垃圾回收(GC),您可以通过属性图形数据的 neptune_lab_mode 参数启用该功能。如果未启用 neptune_streams,则您可以为仅包含属性图形数据的集群启用该功能。如果已启用 neptune_streams 或存在任何未过期的 neptune_streams 数据,则该功能将自动禁用。要启用该功能,需要重启写入器实例。该功能从引擎发行版本 1.4.3.0 开始推出。

启用后,后台作业会清理未使用的字典条目。它不会减少 VolumeBytesUsed,而是会为新的插入腾出索引中的空间。与未启用字典 GC 时相比,启用字典 GC 时的 VolumeBytesUsed 增长率可能会降低。

字典垃圾回收在后台运行,并扫描所有图形和字典数据以查找未使用的词语。一旦大约 6% 的数据发生变化,则会在启动时触发新的运行。它与查询线程争夺头节点资源,例如 CPU、缓冲区缓存、撤消日志生成和写入 I/O 操作,这可能会对查询吞吐量产生负面影响。由于 GC 会扫描未被查询主动触及的数据,因此可能会影响写入器节点上的缓冲区缓存。当 GC 执行新的删除 I/O 操作时,集群可能会看到额外的写入操作并有更多撤消日志需要清除,这也可能导致UndoLogListSize指标值更高。

GC 可以在两种模式下运行:soft_deleteenabled。在 soft_delete 模式下运行时,未使用的字典条目将被标记为已删除(soft_delete),但不会被显式删除。此模式还可用于了解后台操作开启后的性能功能。使用 enabled 模式时,条目会被显式删除(“硬”删除)。建议在切换到 enabled 模式之前,在 soft_delete 模式下运行 GC 一段时间。

字典 GC 支持的最大并发度为 16(在具有 16 个或更多内核的计算机上)。默认情况下,它以单线程运行,但首次启用时可以更高的并发度运行。字典 GC 线程的运行优先级与查询线程相同,它们平等地争夺写入器上的资源。

您可以通过设置 DictionaryGCMode 键通过 neptune_lab_mode 参数启用字典 GC。它接受三个可能的值:disabled(默认)、soft_deleteenabled。例如,以下代码示例会将 DictionaryGCMode 设置为 soft_delete

neptune_lab_mode = 'DictionaryGCMode=soft_delete'

并发度参数 DictionaryGCConcurrency 是可选的,其值可以介于 1 到 16 之间。如果设置为高于最小值 16 和内核数的值,则并发度上限为该值。

neptune_lab_mode = 'DictionaryGCMode=soft_delete,DictionaryGCConcurrency=2'

服务器启动后,一旦有一些可用数据,字典 GC 作业将在后台启用。引擎状态显示字典 GC 的当前状态。下面显示的示例输出显示字典 GC 处于 soft_delete 模式并以 2 的并发度运行。如果后台作业正在运行,则它可能正在主动扫描未使用的字典条目并将其删除,或者正在等待新的删除集触发新一轮的 GC。

{"status":"healthy",...,"labMode":{"ObjectIndex":"disabled","DictionaryGC":"{Mode=enabled,Concurrency=2}"},...}

当满足以下任一条件时,字典 GC 会暂停:

  • 主动批量加载。

  • 可用内存小于 15 Gb。

  • UndoLogListSize 高于 100 万。