周遊警告和無效索引使用導致DAM資產查詢效能問題
Adobe Experience Manager (AEM) DAM資產查詢在大型結果集、不支援的查詢語法、無效的索引選擇或查詢篩選器不足導致過多節點周遊時,會變慢、逾時或失敗。 該問題會影響Query Builder查詢、SQL2查詢、排程器工作、API端點和DAM資產搜尋效能。 若要解決問題,請最佳化查詢、改善索引,並減少周遊。
說明 description
環境
Adobe Experience Manager as a Cloud Service (AEMaaCS)
問題/症狀
- 查詢逾時或傳回*「索引周遊了太多節點」*警告。
- SQL2查詢因剖析錯誤而失敗,因為Oak轉換不支援的LIMIT語法。 例如,
LIMIT 1會變成LIMIT(*)1,導致ParseException。 - 當大型DAM路徑觸發大量周遊時,查詢產生器端點會傳回服務中斷回應。
- 說明查詢輸出未顯示任何索引使用方式,並顯示使用的索引:無。
- 針對大型DAM路徑(例如
/content/dam/...)的查詢需要數百秒的時間,或在使用p.limit=-1時擱置。
根本原因
發生此問題是因為沒有適當篩選條件的大型DAM查詢強制Oak掃描過多節點。 不支援的SQL2 LIMIT/OFFSET語法、無效的索引選取專案、不支援的條件(例如IS NULL)以及無限制的結果集,會阻礙有效率的索引使用。 大型資料夾階層也會在查詢未最佳化時造成HTTP逾時、資源耗盡和周遊警告。
解決方法 resolution
請依照下列步驟以識別查詢問題並改善DAM查詢效能:
- 檢閱記錄、Query Builder Debugger結果、查詢效能輸出和說明查詢結果,以識別查詢失敗型別。
- 使用合理的限製取代
p.limit=-1並在查詢大型DAM階層時減少查詢範圍,以減少大型結果集。 - 以支援的語法(例如
OPTION(LIMIT 1))取代不支援的SQL2 LIMIT/OFFSET語法,並視需要使用查詢產生器分頁。 - 請檢閱說明查詢輸出,並確認查詢使用預期的DAM索引而不是後援索引。
- 當Explain查詢顯示不正確的索引選取範圍時,強制使用適當的索引標籤。 例如,必要時新增
option(index tag assetsOmnisearch)。 - 移除或重新建構防止使用索引並強制周遊的IS NULL條件。
- 當DAM階層包含非常大的資料夾結構時,將查詢分割為較小的子查詢。 例如,將查詢劃分為子資料夾,而不是查詢包含成千上萬個資產的單一路徑。
- 新增其他中繼資料篩選器,例如日期、資源型別或其他索引屬性,以減少掃描的節點數並改善索引適用性。
- 透過重新執行查詢、檢閱Explain Query輸出、確認正確的索引使用方式,以及確保周遊警告和逾時不再發生來驗證解決方案。
何時上報
- 套用查詢限制和篩選器後,周遊警告會繼續出現。
- 說明查詢在查詢最佳化後繼續顯示沒有索引使用方式。
- 更正查詢後,支援的SQL2語法仍然失敗。
- 在最佳化和索引驗證後,Query Builder端點繼續傳回服務中斷錯誤。
experience-cloud-kcs-help-kbarticles