느린 쿼리에 대한 인덱스 제안

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 소요 시간: 4분
  • ISE(Index Suggestion Engine)는 선택한 느린 쿼리에 대한 인덱스 제안을 생성할 수 있습니다. 느린 쿼리에 대한 인덱스 제안을 요청하면 ISE는 쿼리를 분석하고 쿼리 실행 시간을 개선할 수 있는 인덱스를 권장합니다.

    인덱스 제안을 사용하고 인덱스를 생성하도록 선택하면 ISE는 14일 평가 기간 동안 해당 인덱스의 효과를 계속 검토합니다. ISE는 인덱스 관리를 위한 권장 사항을 포함하여 평가 중에 인덱스에 대한 세부 정보를 제공합니다.

    관리자는 ISE를 사용하여 다음을 수행할 수 있습니다.
    • 느린 쿼리에 대한 인덱스 제안을 생성합니다.
    • 인스턴스의 느린 쿼리에 대한 인덱스 제안을 검토합니다.
    • 평가 및 테스트를 위해 인덱스 제안을 비프로덕션 인스턴스로 익스포트합니다.
    • 인덱스 작성을 예약합니다.
    • 인덱스 평가 기간 동안 인덱스의 효과를 모니터링합니다.
    • 인덱스 성능을 테스트합니다(이 테스트는 인덱스의 즉각적인 성능 평가임).
    • ISE에서 권장하는 대로 쿼리 성능을 최적화하지 않는 인덱스를 삭제합니다.
    새 인스턴스와 업그레이드된 인스턴스에서는 Index Suggestion Engine 플러그인(com.glide.index_suggestion)이 기본적으로 활성화됩니다.
    주:
    ISE는 MySQL 데이터베이스만 지원합니다.

    색인 제안 작동 방식

    선택한 느린 쿼리에 대한 인덱스 제안을 요청하여 인덱스 제안 프로세스를 시작합니다. ISE는 느린 쿼리의 테이블에서 열 통계를 수집하는 일일 작업을 실행하여 카디널리티(테이블의 고유 열) 및 null/not null 개수와 같은 데이터를 수집합니다.

    그런 다음 ISE는 수집된 정보를 집계 및 분석하고, 느린 쿼리에 가중치 열 순위 알고리즘을 적용하고, 쿼리에 대한 인덱스 제안을 생성합니다.

    인덱스 제안이 생성된 후 제안을 검토하고 느린 쿼리에 대한 인덱스를 생성할지 여부를 결정합니다. 인덱스를 생성할 때 ISE는 수명 주기를 통해 이동하는 인덱스에 대한 정보를 제공합니다. 다음 세 가지 주요 처리 단계를 통해 인덱스 제안을 추적할 수 있습니다.

    검토할 인덱스 제안
    이 초기 단계에서는 ISE가 느린 쿼리에 대해 생성한 인덱스 제안을 검토할 수 있습니다. 제안을 무시하거나, 추가 테스트를 위해 인덱스 제안을 비프로덕션 인스턴스로 내보내거나, 인덱스 생성을 예약하도록 선택할 수 있습니다. ISE가 인덱스 제안을 성공적으로 생성하고 인덱스 생성을 예약하도록 선택하면 인덱스 제안이 다음 처리 단계로 이동합니다. 그러나 데이터베이스에서 제안을 사용할 수 없거나 제안으로 인해 쿼리 성능이 저하되는 경우 ISE는 인덱스 제안을 삭제하는 것이 좋습니다.
    인덱스 진행 중
    이 단계에서 ISE는 인덱스를 생성하고 14일 평가 기간이 시작됩니다. ISE는 매시간 평가를 수행하여 인덱스가 쿼리 실행 시간을 개선하는지 또는 저하시키는지 확인합니다. ISE는 수행할 수 있는 권장 작업을 포함하여 인덱스 상태를 업데이트합니다. 예를 들어 인덱스가 느린 쿼리의 성능을 향상시키지 않으면 ISE는 인덱스를 삭제하도록 권장합니다. 그런 다음 데이터베이스에서 인덱스를 삭제하도록 예약할 수 있습니다. 이 단계에서는 ISE에서 인덱스 삭제를 권장하더라도 인덱스 성능을 테스트하거나 인덱스를 수락하도록 선택할 수도 있습니다.
    인덱스 완료
    마지막 처리 단계에서 ISE는 인덱스의 최종 상태 및 관련 처리 활동을 설명합니다. 인덱스가 느린 쿼리 시간을 개선한 경우 ISE는 인덱스 상태를 생성됨으로 변경하고 데이터베이스는 인덱스를 계속 사용합니다. 인덱스가 쿼리 시간을 개선하지 않고 인덱스를 삭제하도록 선택한 경우 ISE는 데이터베이스에서 인덱스를 삭제하고 인덱스 상태를 Dropped(삭제됨)로 변경합니다.
    그림 1. 인덱스 제안 수명주기
    인덱스 제안 수명주기의 처리 단계를 보여주는 흐름도

    인덱스 제안에 대한 처리 상태

    인덱스 제안 [sys_index_suggestion] 테이블은 세 가지 주요 처리 단계를 거치는 인덱스에 대한 상태 정보를 제공합니다.
    • 인덱스 제안 > 검토 대상
    • 인덱스 제안 > 진행 중
    • 인덱스 제안 > 완료

    ISE는 다음 상태를 사용하여 인덱스에 대한 처리 작업을 설명합니다.

    표 1. 인덱스 제안 상태
    상태 설명
    인덱스 검토 uggestions
    추천됨 ISE는 느린 쿼리에 대한 인덱스 제안을 생성했습니다.
    삭제 제안됨 - 사용되지 않음 ISE에서는 데이터베이스가 느린 쿼리에 인덱스를 사용하지 않으므로 인덱스를 삭제하는 것이 좋습니다.
    Drop Suggested—성능 저하 ISE에서는 인덱스가 쿼리 시간을 개선하지 않았거나 성능을 저하시키지 않았으므로 인덱스를 삭제하는 것이 좋습니다.
    인덱스 진행 중
    작성 예약됨 인덱스 작성을 예약했습니다.
    작성 진행 중 ISE가 인덱스를 생성하고 있습니다.
    작성 실패 ISE에서 인덱스를 생성할 수 없습니다.
    효율성 평가 ISE는 인덱스를 생성했으며 14일간의 인덱스 평가 기간 동안 인덱스 성능을 평가하고 있습니다.
    삭제 제안됨 - 사용되지 않음 ISE에서는 데이터베이스가 느린 쿼리에 인덱스를 사용하지 않으므로 인덱스가 생성된 테이블에서 인덱스를 삭제하는 것이 좋습니다.
    Drop Suggested—성능 저하 ISE에서는 인덱스가 쿼리 시간을 개선하지 않았으므로 인덱스를 삭제하는 것이 좋습니다.
    삭제 예약됨 데이터베이스에서 인덱스를 삭제하도록 예약했습니다.
    드롭인 Progress ISE가 데이터베이스에서 인덱스를 삭제하고 있습니다.
    삭제 실패

    ISE에서 인덱스를 삭제할 수 없습니다. 도움이 필요하면 문의하십시오 고객 서비스 및 지원 .

    인덱스 완료
    작성됨 14일간의 평가 기간 후 ISE는 인덱스가 쿼리 성능을 향상시킨다고 판단했습니다. 데이터베이스에서 인덱스를 계속 사용함을 나타냅니다.
    무시됨 인덱스 제안을 무시하도록 선택했습니다.
    삭제됨 ISE가 인덱스를 삭제했습니다.
    수용됨 ISE에서 인덱스를 삭제하도록 권장했음에도 불구하고 인덱스를 유지하도록 선택했습니다.
    대체됨 최근 인덱스 제안이 동일한 테이블과 느린 쿼리에 대한 인덱스를 대체했습니다.