Neptune 查詢快取可加速讀取查詢 - Amazon Neptune

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

Neptune 查詢快取可加速讀取查詢

Amazon Neptune 實作了使用R5d執行個體為NVMe基礎的查詢快取,SSD以改善具有頻繁重複性屬性值或RDF常值查詢的查詢讀取效能。查閱快取會暫時將這些值儲存在可快速存取的NVMeSSD磁碟區中。

Amazon Neptune 引擎版本 1.0.4.2.R2 (2021 年 6 月 1 日) 開始就可以使用這項功能。

如果需要從叢集儲存體磁碟區而非記憶體擷取屬性值或常值,則傳回大量頂點和邊緣 (或許多RDF三元組) 屬性的讀取查詢可能會有較高的延遲。範例包括長時間執行的讀取查詢,這些查詢會從身分圖傳回大量完整名稱,或從詐騙偵測圖傳回 IP 地址。隨著查詢傳回的屬性值或RDF常值數目增加,可用記憶體會減少,而且您的查詢執行可能會大幅降低。

Neptune 查詢快取的使用案例

查找緩存僅在您的讀取查詢返回大量頂點和邊或RDF三元組的屬性時才有幫助。

為了最佳化查詢效能,Amazon Neptune 會使用 R5d 執行個體類型,為這類屬性值或常值建立大型快取。然後,從快取擷取它們會比從叢集儲存磁碟區擷取它們快得多。

根據經驗法則,只有在滿足下列三個條件的情況下,才能啟用查詢快取:

  • 您一直觀察到讀取查詢中的延遲增加。

  • 執行讀取查詢時,您也會觀察BufferCacheHitRatioCloudWatch 量度下降 (請參閱使用 Amazon 監控 Neptune CloudWatch)。

  • 在呈現結果之前,您的讀取查詢會花費大量時間實體化傳回值 (請參閱下面的 Gremlin-profile 範例,取得確定要針對一個查詢具體化多少屬性值的方法)。

注意

此功能「僅」在上述特定案例中有幫助。例如,查詢快取根本無法幫助彙總查詢。除非您正在執行將從查詢快取得益的查詢,否則沒有理由使用 R5d 執行個體類型,而非同等且費用較低的 R5 執行個體類型。

如果您使用的是 Gremlin,您可以使用 小精靈 profile API 評估查詢的具體化成本。在「索引操作」下,它會顯示執行期間具體化的術語數量:

Index Operations Query execution: # of statement index ops: 3 # of unique statement index ops: 3 Duplication ratio: 1.0 # of terms materialized: 5273 Serialization: # of statement index ops: 200 # of unique statement index ops: 140 Duplication ratio: 1.43 # of terms materialized: 32693

具體化的非數字術語數量直接與 Neptune 必須執行的術語查詢數量成正比。

使用查詢快取

查詢快取僅適用於 R5d 執行個體類型,預設會自動將其啟用。Neptune R5d 執行個體具有與R5執行個體相同的規格,加上高達 1.8 TB 的NVMe本機SSD儲存體。查詢快取是執行個體特定的,且受益的工作負載可以專門導向至 Neptune 叢集中的 R5d 執行個體,而其他工作負載則可以導向至 R5 或其他執行個體類型。

若要在 Neptune 執行個體上使用查詢快取,只要將該執行個體升級至 R5d 執行個體類型即可。當您這麼做時,Neptune 會自動將neptune_lookup_cache資料庫叢集參數設定為 1 (已啟用),並在該特定執行個體上建立查閱快取。然後,您可以使用執行個體狀態API來確認快取已啟用。

同樣地,若要在給定執行個體上停用查詢快取,請將執行個體從 R5d 執行個體類型縮減至相等的 R5 執行個體類型。

啟動 R5d 執行個體時,會啟用查詢快取且其處於冷啟動模式中,表示它是空白的。Neptune 會在處理查詢時,先檢查查詢快取中是否有屬RDF性值或常值,如果尚未存在,則加入它們。這會逐漸預熱快取。

當您將需要屬性值或 RDF-常值查詢的讀取查詢導向至 R5d 讀取執行個體時,讀取效能會在其快取預熱時稍微降低。不過,當快取預熱時,讀取效能會大幅加快,而且您也可能會看到與命中快取而非叢集儲存體的查詢相關的 I/O 成本下降。記憶體使用率也會改善。

如果您的「寫入器」執行個體是 R5d,則它會在每次寫入操作時自動預熱其查詢快取。此方法確實會稍微增加寫入查詢的延遲,但會更有效率地預熱查詢快取。然後,如果您將需要屬性值或 RDF-常值查詢的讀取查詢導向寫入器執行個體,則會立即開始改善讀取效能,因為這些值已在該處快取。

此外,如果您在 R5d 寫入器執行個體上執行大量載入器,則可能會注意到其效能由於快取而略為降低。

因為查詢快取是每個節點特定的,所以主機更換會將快取重設為冷啟動。

您可以將資料庫叢集參數設定為 0 (停用),暫時停用資料庫叢集中所有執行個體上的查閱快取。neptune_lookup_cache不過,一般而言,在特定執行個體上停用快取會更有意義,方法是將它們從 R5d 縮減至 R5 執行個體類型。