Toad for Oracle은 Auto Optimize SQL 기능을 이용해 단일 SQL 문을 빠르게 최적화할 수 있습니다.
Auto Optimize SQL은 수행시간이 더 빠르거나 동일한 수행시간 내에서 리소스를 더 적게 사용하는 대안 SQL을 생성하고 원본 SQL과 비교하는 기능을 제공합니다.
대안 SQL은 원본 SQL문에 hint를 추가하거나 SQL을 변형하여 SQL 실행 결과는 같지만 실행 계획은 다른 SQL을 생성합니다. Auto Optimize SQL은 Toad for Oracle Xpert Edition 이상에서만 실행이 가능합니다.
Auto Optimize SQL은 Editor창에서 마우스 오른쪽 버튼을 눌러 Optimize > Auto Optimize SQL을 선택합니다.
Auto Optimize SQL에 대한 옵션을 선택할 수 있습니다.
먼저 Database type은 총 3가지가 있습니다. DB 성격에 따라 선택하시면 됩니다. 기본적으로 OLTP가 선택되어 있으며 type을 명확하게 판단하기 힘들 경우 기본을 선택하시면 됩니다.
Search depth는 얼마나 더 깊은 단계의 대안 SQL을 찾아낼지에 대한 설정입니다. 1부터 5까지가 있으며 숫자가 커질수록 더 복잡하고 많은 수의 대안 SQL을 작성합니다. 기본 값은 2로 설정되어 있으며 낮은 단계에서 적절한 대안 SQL이 나오지 않으면 숫자를 높여가며 수행할 수 있습니다.
Stop if optimization exceeds 는 특정한 시간이 지나면 대안 SQL의 search를 중지하는 기능입니다.
Generate rewrites only (do not execute)는 대안 SQL을 생성은 하지만 실행은 하지 않는 옵션입니다. 이 옵션을 체크하지 않으면 대안 SQL을 생성하고 바로 수행까지 하기 때문에 복잡하고 다수의 SQL이 수행될 경우 의도치 않게 서버에 부하를 줄 수 있습니다. 이 옵션을 체크하면 작성된 대안 SQL 중에서 선별하여 수행하고 결과를 얻을 수 있습니다.
옵션을 모두 지정하고 OK버튼을 누르면 별도의 창에서 Auto Optimize SQL을 수행합니다. 왼쪽 창은 대안 SQL을 생성하고 각각 수행해서 경과 시간을 보여주는 과정을 진행 중입니다. 오른쪽 창에는 왼쪽에서 선택한 원본 및 대안 SQL을 보여주고 실행 계획 및 실행 후 통계 정보까지 보여줍니다.
수행 도중에 만족할만한 결과를 얻었다면 100%까지 진행하지 않고 중지시킬 수 있습니다. 현재까지 작성된 대안 SQL과 실행 결과를 가지고 있습니다.
모두 수행하고 나면 총 몇 개의 대안 SQL을 생성했는지, 그 중 가장 효율적인 SQL은 어떤 SQL인지, 원본 SQL 대비 얼마나 좋은 성능(경과 시간의 단축)을 보이는지에 대한 결과를 보여줍니다.
실행 계획에서는 마우스 오른쪽 버튼을 눌러 Display mode를 변경할 수 있습니다.
Compare Alternatives탭을 선택하면 원본 SQL과 대안 SQL 및 실행 계획을 비교해 볼 수 있습니다.
- 강좌 URL : http://www.gurubee.net/lecture/2742
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.