개요

카우치베이스 서버 6.5(개발자 프리뷰)에서 출시된 인덱스 어드바이저의 두 번째 기능인 어드바이저 기능은 단일 쿼리에 대한 조언에서 쿼리 워크로드에 대한 인덱스 추천 및 세션 처리 지원으로 범위를 확장합니다. 이 문서에서는 이 두 가지 다른 방식으로 어떻게 작동하는지에 대해 간략하게 살펴보겠습니다.

워크로드에 대한 어드바이저 기능

어드바이저 기능은 다음 단계로 작동합니다:

    1. 하나의 단일 쿼리 또는 여러 쿼리로 구성된 쿼리 워크로드를 입력으로 받습니다.
    2. 인덱스 추천으로 각각의 고유 쿼리를 처리하세요.
    3. 전체 워크로드에 대한 현재/권장 인덱스를 병합하여 출력합니다.

구문:

SELECT ADVISOR("query")

SELECT ADVISOR(["query1", "query2", "query3″...])

아래 예는 시스템:완료된_요청에서 쿼리 워크로드가 발생하는 시나리오를 보여줍니다:

ADVISE 문과 마찬가지로 ADVISOR() 함수의 출력은 세 부분으로 구성됩니다:

    • 현재_사용된_인덱스

이 세션에서는 현재 사용된 인덱스와 해당 쿼리 문 목록 및 각 쿼리의 실행 횟수를 요약합니다.

    • 추천_인덱스

이 세션에서는 전체 워크로드에 대한 WHERE/ON 절의 술어에 기반한 권장 인덱스에 대한 정보를 제공합니다.

    • 추천_커버링_인덱스

쿼리 워크로드에 적용되는 커버링 인덱스 권장 사항이 여기에 나열됩니다.

세션 처리에 대한 어드바이저 기능

세션 처리 기능을 사용하면 다음 단계에 따라 들어오는 쿼리 워크로드에 대해 인덱스 어드바이저를 미리 설정할 수 있습니다.

    • 특정 속성으로 관심 있는 쿼리를 정의합니다.
    • 세션을 초기화하여 일정 기간 동안 클러스터에서 실행되는 쿼리 워크로드를 모니터링하고 수집합니다.
    • 나중에 수집된 쿼리 워크로드에 대한 분석을 비동기적으로 수행하려면 인덱스 어드바이저를 호출하세요.
    • 전체 프로세스가 완료된 후 인덱스 권장 사항을 추출하고 처리합니다.

사용 구문:

1. ADVISOR( { "action" : "start",

           "profile": "john",

           "응답" : "3초",     

           "duration" : "1m" ,

           "query_count" : 200 } )

    • "action"- 세션이 진행되도록 설정할 사용자: "시작", "중지", "가져오기", "목록", "퍼지", "중단".
    • "프로필"(선택 사항) - 쿼리에 관심을 가질 지정된 사용자 프로필입니다. 설정하지 않으면 모든 사용자가 실행한 쿼리를 수집합니다.
    • "응답"(선택 사항) - 쿼리가 더 오래 실행되도록 설정된 시간 임계값(기본 설정은 0초)입니다.
    • "기간"(필수) - 쿼리를 수집하기 위해 세션이 실행될 기간입니다. 유효한 시간 단위는 "ns", "us"(또는 "µs"), "ms", "s", "m", "h"입니다.
    • "query_count"(선택 사항) - 세션이 수집할 쿼리 수에 대한 상한입니다. 쿼리 노드당 쿼리_제한은 4000입니다. 사용자가 이보다 많은 쿼리를 수집하려는 경우 세션을 초기화하기 전에 전역 설정을 수정해야 합니다:

curl http://localhost:port/admin/settings -d '{"completed-limit":10000}' -u user:password"

세션이 성공적으로 초기화되면 아래와 같이 참조할 수 있는 고유 세션 이름이 반환됩니다. 를 설정하면 워크로드 수집이 완료된 직후에 인덱스 어드바이저를 호출하여 분석을 수행하는 비동기 작업이 실행되도록 예약됩니다.

2. ADVISOR( { "action" : "get",

           "세션": “06fcdefe-f864-48f5-a79b-b2f3345a6745” } )

분석 프로세스가 완료된 후 사용자는 다른 advisor() 함수를 실행하여 해당 세션 이름을 사용하여 인덱스 추천 결과를 검색할 수 있습니다.

3. ADVISOR( { "액션" : "퍼지",

           "세션": “06fcdefe-f864-48f5-a79b-b2f3345a6745” } )

특정 세션에 대한 인덱스 추천 결과가 더 이상 필요하지 않은 경우, 사용자는 공간 효율성을 위해 이를 제거하도록 선택할 수 있습니다.

가장 최근 세션도 캐시 용량에 도달하면 자동으로 플러시됩니다.

4. ADVISOR({ "action": "목록",

    "status":"완료"})

        이 기능은 다음을 수행할 수 있습니다. 현재 활성 상태인 세션, 현재 완료된 세션 및 모든 기존 세션의 목록을 제공합니다. '상태'에 대한 입력은 '활성', '완료', '모두' 중 하나만 입력할 수 있습니다.

출력 정보는 system:tasks_cache에서 가져옵니다. 인덱스 어드바이저와 관련된 정보를 이해하기 위해 예를 들어 보겠습니다:

    • 클래스: 이 작업은 인덱스 어드바이저에서 제공됩니다.
    • 지연: 쿼리 수집 단계가 지속되는 기간입니다.
    • 이름: 위와 동일한 세션 이름입니다.
    • 상태: 세션의 상태입니다: ["완료됨", "일정", "실행 중"].

 

5. ADVISOR( { "action" : "stop",

           "세션": “06fcdefe-f864-48f5-a79b-b2f3345a6745” } )

사용자는 쿼리 수집을 조기에 중단하고 인덱스 분석을 즉시 실행하도록 가져옵니다.

6. ADVISOR( { "action" : "abort",

           "세션": “06fcdefe-f864-48f5-a79b-b2f3345a6745” } )

사용자는 다음을 수행할 수도 있습니다. 분석을 실행하지 않고 한 세션을 취소합니다.

 

요약

어드바이저 기능은 단일 쿼리 및 다중 쿼리에서 작동하며, 전체 쿼리 워크로드에 대해 현재 사용되는 인덱스, 권장 인덱스 및 권장 커버링 인덱스에 대한 정보를 제공합니다.

어드바이저 세션 처리를 사용하면 사용자가 세션을 만들어 일정 기간 동안 지정된 요구 사항을 충족하는 쿼리를 수집하고 인덱스 어드바이저를 호출하여 이에 대한 권장 사항을 제공할 수 있습니다.

두 기능 모두 기능과 성능에 대한 개선의 여지가 많기 때문에 다음 단계에서는 디자인을 최적화하기 위해 계속 탐색하고 피드백을 받을 것입니다.

작성자

게시자 창 리우

N1QL 쿼리 팀의 소프트웨어 엔지니어

댓글 남기기