순회 경고 및 비효율적인 인덱스 사용으로 인해 DAM 에셋 쿼리 성능 문제
Adobe Experience Manager(AEM) 큰 결과 세트, 지원되지 않는 쿼리 구문, 비효율적인 인덱스 선택 또는 부족한 쿼리 필터로 인해 과도한 노드 순회가 발생하는 경우 DAM 에셋 쿼리가 느려지거나 시간 초과되거나 실패합니다. 이 문제는 Query Builder 쿼리, SQL2 쿼리, 스케줄러 작업, API 끝점 및 DAM 자산 검색 성능에 영향을 줍니다. 이 문제를 해결하려면 쿼리를 최적화하고 색인화를 개선하며 순회를 줄입니다.
설명 description
환경
Adobe Experience Manager as a Cloud Service (AEMaaCS)
문제/증상
- 쿼리 시간 초과 또는 반환*“인덱스가 너무 많은 노드를 트래버스했습니다.”* 경고.
- Oak이 지원되지 않는 LIMIT 구문을 변환하므로 SQL2 쿼리가 구문 분석 오류로 실패합니다. 예를 들어
LIMIT 1은(는)LIMIT(*)1이(가) 되어 ParseException이 발생합니다. - 큰 DAM 경로가 대량 순회를 트리거할 때 쿼리 빌더 엔드포인트가 서비스 중단 응답을 반환합니다.
- 쿼리 설명 출력에 인덱스 사용이 표시되지 않고 사용된 인덱스: 없음을 표시합니다.
/content/dam/...과(와) 같은 큰 DAM 경로에 대한 쿼리는 수백 초가 걸리거나p.limit=-1을(를) 사용할 때 중단됩니다.
근본 원인
이 문제는 적절한 필터가 없는 큰 DAM 쿼리로 인해 Oak에서 과도한 수의 노드를 스캔하기 때문에 발생합니다. 지원되지 않는 SQL2 LIMIT/OFFSET 구문, 잘못된 인덱스 선택, IS NULL과(와) 같은 지원되지 않는 조건 및 제한되지 않은 결과 집합으로 인해 효율적인 인덱스를 사용할 수 없습니다. 또한 폴더 계층 구조가 크면 쿼리가 최적화되지 않을 때 HTTP 시간 초과, 리소스 소모 및 순회 경고가 발생할 수 있습니다.
해결 방법 resolution
쿼리 문제를 식별하고 DAM 쿼리 성능을 개선하려면 다음 단계를 따르십시오.
- 로그, Query Builder 디버거 결과, 쿼리 성능 출력 및 쿼리 결과 설명을 검토하여 쿼리 실패 유형을 식별합니다.
- 큰 DAM 계층을 쿼리할 때
p.limit=-1을(를) 적절한 제한으로 바꾸고 쿼리 범위를 줄여 큰 결과 집합을 줄입니다. - 지원되지 않는 SQL2 LIMIT/OFFSET 구문을
OPTION(LIMIT 1)과(와) 같은 지원되는 구문으로 바꾸고 필요한 경우 Query Builder 페이지 매김을 사용합니다. - 설명 쿼리 출력을 검토하고 쿼리에서 대체 색인 대신 예상 DAM 색인을 사용하는지 확인합니다.
- 쿼리 설명에 잘못된 색인 선택이 표시되면 적절한 색인 태그를 적용합니다. 예를 들어 필요한 경우
option(index tag assetsOmnisearch)을(를) 추가합니다. - 인덱스 사용 및 강제 순회를 방지하는 IS NULL 조건을 제거하거나 재구성하십시오.
- DAM 계층에 매우 큰 폴더 구조가 포함된 경우 쿼리를 더 작은 하위 쿼리로 분할합니다. 예를 들어 수만 개의 자산이 포함된 단일 경로를 쿼리하는 대신 하위 폴더로 쿼리를 나눕니다.
- 날짜, 리소스 유형 또는 기타 인덱싱된 속성과 같은 추가 메타데이터 필터를 추가하여 스캔된 노드 수를 줄이고 인덱스 적격성을 개선합니다.
- 쿼리를 다시 실행하고, 쿼리 출력 설명을 검토하고, 올바른 인덱스 사용을 확인하고, 통과 경고 및 시간 초과가 더 이상 발생하지 않도록 하여 해결의 유효성을 검사합니다.
에스컬레이션 시기
- 쿼리 제한 및 필터가 적용된 후에도 순회 경고가 계속됩니다.
- 쿼리 설명 쿼리 최적화 후 색인 사용을 계속 표시하지 않습니다.
- 쿼리를 수정한 후에도 지원되는 SQL2 구문이 실패합니다.
- 쿼리 빌더 종단점은 최적화 및 인덱스 유효성 검사 후 서비스 중단 오류를 계속 반환합니다.
experience-cloud-kcs-help-kbarticles