예제 시나리오

성능이 좋지 못한 상위 n개의 명령문에 대한 보고서 생성

매일 밤 일괄처리 작업은 데이터베이스에 대해 실행되는 성능이 좋지 못한 상위 n개의 SQL문을 찾습니다. 각 SQL문에 대해 일괄처리 작업은 formatsql 웹 API를 호출하여 가독성 향상을 위해 SQL문을 포맷팅하고 통계를 사용하여 술어에 어노테이션을 작성합니다. 또한 이 일괄처리 작업은 webve 웹 API를 호출하여 각 SQL문에 대한 액세스 플랜 그래프를 생성합니다. 그런 다음 이 일괄처리 작업은 포맷팅된 모든 명령문과 액세스 플랜 그래프 URL을 이메일 메시지로 수집하는데, 이 이메일 메시지는 데이터베이스를 담당하는 DBA에게 발송됩니다. 그러면 DBA가 아침에 이 모든 정보를 검토할 수 있습니다.

그림 1. 일괄처리 작업을 사용하여 SQL문 포맷팅, 어노테이션 작성 및 액세스 플랜 그래프 생성
일괄처리 작업을 사용하여 SQL문 포맷팅, 어노테이션 작성 및 액세스 플랜 그래프 생성

데이터베이스 변경 후 SQL문의 원래 액세스 플랜과 새 액세스 플랜 비교

DBA는 쿼리 워크로드를 작성하고 Explain하는 일괄처리 작업을 시작합니다. 그러면 매일 밤 일괄처리 작업이 동일한 SQL문에서 다른 쿼리 워크로드를 작성하고 SQL문을 Explain하며, 이전 및 현재 EXPLAIN 스냅샷의 액세스 플랜을 비교합니다. 마지막으로 일괄처리 작업은 비교에 대한 보고서를 DBA에게 이메일로 발송하는데, DBA는 아침에 보고서를 검토하고 악화된 액세스 플랜을 개선하기 위해 필요한 조치를 계획할 수 있습니다.

그림 2. 일괄처리 작업을 사용하여 두 개의 쿼리 워크로드에 대한 EXPLAIN 스냅샷 비교
일괄처리 작업을 사용하여 두 개의 쿼리 워크로드에 대한 EXPLAIN 스냅샷 비교

피드백