本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Neptune 支持字典垃圾回收 (GC),可以通过属性图数据的neptune_lab_mode
参数启用字典垃圾回收 (GC)。如果未启用,则可以为仅包含属性图数据的集群启用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_delete
和enabled
。在该soft_delete
模式下运行时,未使用的字典条目将被标记为已删除(soft_delete),但不会被明确删除。此模式还可用于了解后台操作开启后的性能特征。使用启用模式时,条目会被显式删除(“硬” 删除)。建议先在soft_delete
模式下运行 GC 一段时间,然后再切换到enabled
模式。
字典 GC 支持的最大并发度为 16(在具有 16 个或更多内核的计算机上)。默认情况下,它使用单线程运行,但首次启用时可以以更高的并发度运行。字典 GC 线程的运行优先级与查询线程相同,它们与写入器上的资源争夺相同。
可以通过设置DictionaryGCMode
密钥通过neptune_lab_mode
参数启用字典 GC。它接受三个可能的值:disabled
(默认)soft_delete
、或enabled
。例如,以下代码示例会将设置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。
"labMode":{"DictionaryGC":"{Mode=soft_delete,Concurrency=2}"}
当满足以下任一条件时,字典 GC 将暂停:
-
主动批量加载。
-
可用内存小于 15Gb。
-
UndoLogListSize
高于 1,000,000。