느린 쿼리에 대한 인덱스 제안
ISE(인덱스 제안 엔진)는 선택한 느린 쿼리에 대한 인덱스 제안을 생성할 수 있습니다. 느린 쿼리에 대한 인덱스 제안을 요청하면 ISE는 쿼리를 분석하고 쿼리 실행 시간을 개선할 수 있는 인덱스를 권장합니다.
새 인스턴스와 업그레이드된 인스턴스에서는 인덱스 제안 엔진 플러그인(com.glide.index_suggestion)이 기본적으로 활성화됩니다.
주:
ISE는 MySQL 데이터베이스만 지원합니다.
관리자는 ISE를 사용하여 다음을 수행합니다.
- 느린 쿼리에 대한 인덱스 제안을 생성합니다.
- 인스턴스에서 느린 쿼리에 대한 인덱스 제안을 검토합니다.
- 평가 및 테스트를 위해 인덱스 제안을 비프로덕션 인스턴스로 익스포트합니다.
- 생성할 인덱스를 예약합니다.
- 인덱스 평가 기간 동안 인덱스의 효과를 모니터링합니다.
- 인덱스 성능을 테스트합니다(이 테스트는 인덱스에 대한 즉각적인 성능 평가입니다).
- ISE에서 권장하는 대로 쿼리 성능을 최적화하지 않는 인덱스를 삭제합니다.
인덱스 제안을 사용하고 인덱스를 생성하도록 선택하는 경우 ISE는 14일 평가 기간 동안 해당 인덱스의 효과를 계속 검토합니다. ISE는 인덱스 관리를 위한 권장 사항을 포함하여 평가 중에 인덱스에 대한 세부 정보를 제공합니다.
인덱스 제안의 작동 방식
선택한 느린 쿼리에 대한 인덱스 제안을 요청하여 인덱스 제안 프로세스를 시작합니다. ISE는 느린 쿼리의 테이블에서 열 통계를 수집하는 일일 작업을 실행하여 카디널리티(테이블의 고유 열) 및 null/null이 아닌 카운트와 같은 데이터를 수집합니다.
다음으로, ISE는 수집된 정보를 집계 및 분석하고, 가중치 열 순위 알고리즘을 느린 쿼리에 적용하고, 쿼리에 대한 인덱스 제안을 생성합니다.
인덱스 제안이 생성된 후에는 제안을 검토하고 느린 쿼리에 대한 인덱스를 생성할지 여부를 결정합니다. 인덱스를 만들 때 ISE는 수명 주기를 통해 이동하는 인덱스에 대한 정보를 제공합니다. 다음 세 가지 주요 처리 단계를 통해 인덱스 제안을 추적할 수 있습니다.
- 검토할 인덱스 제안
- 이 초기 단계에서는 ISE가 느린 쿼리에 대해 생성한 인덱스 제안을 검토할 수 있습니다. 제안을 무시하거나, 추가 테스트를 위해 인덱스 제안을 비프로덕션 인스턴스로 익스포트하거나, 인덱스 생성을 예약하도록 선택할 수 있습니다. ISE가 인덱스 제안을 성공적으로 생성하고 인덱스 생성을 예약하도록 선택하면 인덱스 제안이 다음 처리 단계로 이동합니다. 그러나 데이터베이스에서 제안을 사용할 수 없거나 제안으로 인해 쿼리 성능이 저하되는 경우 ISE는 인덱스 제안을 삭제하는 것이 좋습니다.
- 인덱스 진행 중
- 이 단계에서 ISE는 인덱스를 생성하고 14일의 평가 기간이 시작됩니다. ISE는 시간별 평가를 수행하여 인덱스가 쿼리 실행 시간을 개선하는지 또는 저하하는지 확인합니다. ISE는 수행할 수 있는 권장 작업을 포함하여 인덱스 상태를 업데이트합니다. 예를 들어 인덱스가 느린 쿼리의 성능을 향상시키지 않으면 ISE는 인덱스를 삭제하도록 조언합니다. 그런 다음 데이터베이스에서 인덱스가 삭제되도록 예약할 수 있습니다. 이 단계에서는 ISE에서 인덱스 삭제를 권장하더라도 인덱스 성능을 테스트하거나 인덱스를 수락하도록 선택할 수도 있습니다.
- 인덱스 완료됨
- 마지막 처리 단계에서 ISE는 인덱스 및 관련 처리 활동의 최종 상태를 설명합니다. 인덱스가 느린 쿼리 시간을 개선한 경우 ISE는 인덱스 상태를 생성됨으로 변경하고 데이터베이스는 계속해서 인덱스를 사용합니다. 인덱스가 쿼리 시간을 개선하지 않고 인덱스를 삭제하도록 선택한 경우 ISE는 데이터베이스에서 인덱스를 삭제하고 인덱스 상태를 삭제됨으로 변경합니다.
인덱스 제안에 대한 처리 상태
인덱스 제안 [sys_index_suggestion] 테이블은 다음 세 가지 주요 처리 단계를 통해 이동하는 인덱스에 대한 상태 정보를 제공합니다.
- 인덱스 제안 검토할 >
- 인덱스 제안 > 진행 중
- 인덱스 제안 > 완료
ISE는 다음 상태를 사용하여 인덱스에 대한 처리 활동을 설명합니다.
| 상태 | 설명 |
|---|---|
| 검토할 인덱스 강제 | |
| 추천됨 | ISE가 느린 쿼리에 대한 인덱스 제안을 생성했습니다. |
| 삭제 제안됨 - 사용하지 않음 | ISE는 데이터베이스가 느린 쿼리에 인덱스를 사용하지 않으므로 인덱스를 삭제하는 것이 좋습니다. |
| 삭제 제안 - 성능 저하 | ISE는 인덱스가 쿼리 시간을 개선하지 않거나 성능을 저하시키지 않았기 때문에 인덱스를 삭제하는 것이 좋습니다. |
| 인덱스 진행 중 | |
| 작성 예약됨 | 인덱스 생성을 예약했습니다. |
| 작성 진행 중 | ISE가 인덱스를 생성하는 중입니다. |
| 작성 실패 | ISE에서 인덱스를 생성할 수 없습니다. |
| 효과성 평가 | ISE는 지수를 생성했으며 14일간의 지수 평가 기간 동안 지수 성능을 평가하고 있습니다. |
| 삭제 제안됨 - 사용하지 않음 | ISE는 데이터베이스가 느린 쿼리에 인덱스를 사용하지 않으므로 인덱스가 생성된 테이블에서 인덱스를 삭제하는 것이 좋습니다. |
| 삭제 제안 - 성능 저하 | ISE는 인덱스가 쿼리 시간을 개선하지 않았기 때문에 인덱스를 삭제할 것을 권장합니다. |
| 삭제 예약됨 | 데이터베이스에서 인덱스를 삭제하도록 예약했습니다. |
| P회귀에서 삭제 | ISE가 데이터베이스에서 인덱스를 삭제하고 있습니다. |
| 삭제 실패 |
ISE에서 인덱스를 삭제할 수 없습니다. 도움을 받으려면 문의하십시오 고객 서비스 및 지원 . |
| 인덱스 완료됨 | |
| 작성됨 | 14일의 평가 기간이 끝난 후 ISE는 인덱스가 쿼리 성능을 향상시켰다고 확인했습니다. 데이터베이스에서 인덱스를 계속 사용함을 나타냅니다. |
| 무시됨 | 인덱스 제안을 무시하기로 선택했습니다. |
| 삭제됨 | ISE가 인덱스를 삭제했습니다. |
| 수용함 | ISE에서 인덱스를 삭제할 것을 권장했음에도 불구하고 인덱스를 유지하기로 결정했습니다. |
| 대체됨 | 최근 인덱스 제안으로 동일한 테이블과 느린 쿼리에 대한 인덱스가 대체되었습니다. |