

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

# 儲存
<a name="storage"></a>

 Neptune 支援屬性圖形資料的字典垃圾收集 (GC)，當 `neptune_streams` 非作用中時，可以透過 `neptune_lab_mode` [參數](parameters.md)啟用。啟用時，此背景任務會清除未使用的字典項目，進而降低資料成長速率。此功能可以兩種模式執行：soft\$1delete （將項目標記為已刪除，而不明確移除） 和啟用 （明確刪除項目）。GC 程序可以透過爭用 CPU 和緩衝區快取等資源的查詢執行緒來影響系統效能，並且可以使用最多 16 個執行緒的並行執行。

 Neptune 也支援內嵌伺服器產生的邊緣 IDs，可在 neptune\$1streams 非作用中時透過組態[參數](parameters.md)啟用。啟用此功能時，伺服器會使用「neptune\$1reserved」的預留字首，為沒有使用者定義 IDs 的邊緣產生唯一的內嵌 ID。這些內嵌 IDs 不會存放在字典中，這可以提高儲存效率。

**Topics**
+ [Neptune 字典廢棄項目集合](storage-gc.md)
+ [Neptune 內嵌伺服器產生的邊緣 ID](storage-edge-id.md)

# 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。

# Neptune 內嵌伺服器產生的邊緣 ID
<a name="storage-edge-id"></a>

 Neptune 支援內嵌伺服器產生邊緣 IDs。未啟用`neptune_enable_inline_server_generated_edge_id`時，可以透過 Neptune `neptune_streams` 組態[參數](parameters.md)啟用。此功能適用於從引擎 [1.4.3.0 版開始的 Gremlin 查詢](https://docs.aws.amazon.com/releases/release-1.4.3.0.xml)，並可用於未來版本的 OpenCypher 查詢。

 Edge ID 是邊緣的唯一識別符。插入邊緣時，可以提供邊緣 ID。如果未提供 ID，伺服器預設會產生 UUID 型 ID 並將其指派給邊緣。如同使用者定義的 ID，UUID 型伺服器產生的 ID 會存放在 字典中。

 啟用`neptune_enable_inline_server_generated_edge_id`此功能時，當查詢中未提供 ID 時，伺服器會產生唯一的內嵌 ID。內嵌IDs 不會存放在字典中，可提高儲存效率。伺服器產生的內嵌 IDs以預留字首 開頭`neptune_reserved`。

**警告**  
 Neptune 會為伺服器產生的內嵌 IDs保留`'neptune_reserved'`字首。對於嘗試插入資料的使用者定義 ID 開頭為預留字首的查詢，會顯示錯誤。

 將叢集層級參數設定為 ，即可啟用內嵌伺服器產生的邊緣 ID `neptune_enable_inline_server_generated_edge_id` 功能`1`。需要重新啟動執行個體。下列範例會啟用伺服器產生的邊緣 ID 功能：

```
"ParameterName=neptune_enable_inline_server_generated_edge_id,ParameterValue=1,ApplyMethod=pending-reboot"
```

 若要驗證功能是否已啟用，您可以檢查引擎狀態中的功能。如果`neptune_streams`啟用 ，此功能會自動停用。下列範例輸出顯示已啟用功能的引擎狀態：

```
"features":{"InlineServerGeneratedEdgeId":"enabled"}
```

 啟用內嵌伺服器產生的邊緣 ID 功能時，下列 Gremlin 範例會新增沒有使用者定義 ID 的邊緣：

```
curl - X POST--url https: //<neptune-cluster-endpoint>:8182/gremlin/ --data '{"gremlin":"g.withSideEffect(\"Neptune#disablePushdownOptimization\", true).addV().property(id, \"a\").addV().property(id, \"b\").addE(\"el\").to(V(\"a\"))"}'
{
    "requestId": "b6b84605-53ad-4c04-baf1-7f0f31a3aeaf",
    "status": {
        "message": "",
        "code": 200,
        "attributes": {
            "@type": "g:Map",
            "@value": []
        }
    },
    "result": {
        "data": {
            "@type": "g:List",
            "@value": [{
                "@type": "g:Edge",
                "@value": {
                    "id": "neptune_reserved_231850767",
                    "label": "el",
                    "inVLabel": "vertex",
                    "outVLabel": "vertex",
                    "inV": "a",
                    "outV": "b"
                }
            }]
        },
        "meta": {
            "@type": "g:Map",
            "@value": []
        }
    }
}
```