

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Neptune 字典廢棄項目集合
<a name="storage-gc"></a>

 Neptune 支援字典垃圾收集 (GC)，可透過 屬性圖形資料的 `neptune_lab_mode` [參數](parameters.md)啟用。當 `neptune_streams`未啟用時，它可以為僅具有屬性圖形資料的叢集啟用。如果`neptune_streams`已啟用或有任何未過期`neptune_streams`的資料，此功能會自動停用。此功能需要重新啟動寫入器執行個體才能啟用。此功能可從引擎 [1.4.3.0](https://docs.aws.amazon.com/releases/release-1.4.3.0.xml) 版取得。

 啟用時，未使用的字典項目會由背景任務清除。它不會減少 `VolumeBytesUsed`，而是釋放索引中新插入的空間。當字典 GC 相對於未啟用時，在 中的成長率`VolumeBytesUsed`可能較低。

 字典垃圾收集會在背景執行，並掃描所有圖形和字典資料，以尋找未使用的詞彙。一旦大約 6% 的資料變更，就會在啟動時觸發新的執行。GC 與查詢執行緒競爭伺服器資源，例如 CPU、緩衝區快取、復原日誌產生和寫入 I/O 操作，可能會降低查詢輸送量。由於 GC 會掃描查詢未主動接觸的資料，因此可能會影響寫入器節點上的緩衝區快取。叢集可能會看到額外的寫入 I/O 操作，並在 GC 執行新的刪除時有更多復原日誌要清除，這可能會導致`UndoLogListSize`指標的值更高。

 GC 可以兩種模式執行， `soft_delete`和 `enabled`。在 `soft_delete` 模式下執行時，未使用的字典項目會標示為已刪除 (soft\$1delete)，但不會明確刪除。此模式也可以用來了解背景操作開啟後的效能特性。使用 `enabled` 模式時，會明確刪除項目 (「硬性」刪除）。建議在切換到 `soft_delete` 模式之前，在 `enabled` 模式下執行 GC 一段時間。

 字典 GC 支援最多 16 個並行 （在具有 16 個或更多核心的機器上）。依預設，它使用單一執行緒執行，但在第一次啟用時，可以使用較高的並行執行。字典 GC 執行緒 （與查詢執行緒） 的優先順序相同，而且它們與寫入器上的資源競爭相等。

 可以透過 `neptune_lab_mode` [參數](parameters.md)設定 `DictionaryGCMode`金鑰來啟用字典 GC。它接受三個可能的值： `disabled` （預設）`soft_delete`、 或 `enabled`。例如，下列程式碼範例會將 設定為 `DictionaryGCMode` `soft_delete`：

```
neptune_lab_mode = 'DictionaryGCMode=soft_delete'
```

 並行[參數](parameters.md) 是選用的`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 會暫停：
+  作用中大量載入。
+  可用的記憶體小於 15Gb。
+  `UndoLogListSize` 高於 1，000，000。