1. 보다 빠른 SQL튜닝과 분석을 위한 새로운 툴
2009년 11 월
Americas Headquarters
100 California Street, 12th Floor
San Francisco, California 94111
EMEA Headquarters
York House
18 York Road
Maidenhead, Berkshire
SL6 1SF, United Kingdom
Devgear
서울특별시 반포1동 746-14
3층 ㈜데브기어
(T) 02.595. 4288
SQL 튜닝, 분석툴
2. Embarcadero Technologies
보다 빠른 SQL 튜닝과 분석을 위한 새로운 툴
데브기어 기술자료 tech.devgear.co.kr 데브기어 홈페이지 www.devgear.co.kr 문의 ask@embarcadero.kr
소개
SQL튜닝은 복잡해 졌습니다. 데이터베이스의 규모와 복잡도는 계속 증가해 갑니다. 그리고 혁신적인 애플리케이션 개발툴은 SQL 코드를 자동 생성하기도 합니다. 이런 SQL 코드의 경우 성능 관점에서는 종종 비효율적입니다. 또한 DBMS의 최적 실행 경로 선택 능력은 내장된 자체 옵티마이저에 따라서 다르다는 사실은 성능 최적화 분야에서는 자주 부딪히게 되는 과제입니다. 이와 같이 복잡함이 늘어나는 와중에도, 하드웨어 비용 절감 압박과 엄격한 SLA (Service Level Agreement)와 성능 요건 충족을 위한 압박은 커져만 갑니다.
이로 인해, 프로파일링/튜닝 툴 과 DBA 의 전문 지식은 그 한계를 계속해서 시험 받고 있습니다. 게다가 오늘날에는 애플리케이션 개발자 스스로를 SQL 최적화 툴로 무장을 시키고 개발 단계에서부터 SQL 튜닝을 통합하려는 추세가 강해지고 있습니다.
이 상황에 대한 최선책은 툴과 SQL 튜닝 방법을 표준화하는 것입니다. 이를 통해 일반 개발자뿐만 아니라 보다 수준 높은 SQL 튜닝 기술이 요구되는 DBA까지 모두가 일관되고 통일된 접근 방식을 가질 수 있도록 하는 것 입니다.
전통적으로 DBA 는 힌트 삽입(hint injection) 또는 SQL 변경을 이용하여 튜닝을 해왔습니다. 하지만 보다 최근의 SQL 튜닝에는 인덱스 분석이나 비주얼 SQL 튜닝(VST:Visual SQL Tuning)라고 하는 신기술이 도입 되었습니다. 개발자에게 있어서는 SQL 튜닝의 복잡함이 경감되는 한편, DBA 에 있어서는 보다 상세하고 수준 높은 분석이 가능하도록 하는 2가지 효과를 제공합니다.
기존의 SQL 튜닝
특정 데이터베이스에서 SQL 을 실행하면, 그 데이터베이스에 내장된 옵티마이저는 작성된 SQL을 파악하여 실행 시에 가장 빠른 실행 경로를 결정하고, 이렇게 생성된 실행 계획에 따라 "비용" 을 반영합니다.
데이터베이스 제작사는 자사의 옵티마이저 성능을 끊임 없이 향상시키고 있기 때문에 일반적으로 데이터베이스 내장 옵티마이저는 최적인 경로를 선택합니다. 다만, 최고의 성능 확보를 위해서, 보다 빠른 실행 경로를 옵티마이저에게 강제적으로 선택시켜야 하는 경우 또한 늘 존재합니다. 이런 경우에는 힌트 삽입을 통해 SQL의 실행 시에 옵티마이저에게 지시하게 됩니다.
어떤 DBA는 옵티마이저에 힌트를 삽입하는 것보다는, SQL 을 고쳐 쓰는 방식을 더 선호하기도 합니다. 이와 같이 SQL 수정을 통해 튜닝을 하면 흔한 SQL 코딩 실수인 카테시안 조인 (Cartesian Join) 제거, 표현식 변형, 유효하지 않는 아웃 조인 (Outer Join), 추이성 (Transitivity), 서브 쿼리의 한정적인 사용 등에 의한 문제를 해결할 수 있습니다. 단, SQL 수정 시에는 쿼리의 결과 값이 자칫 달라질 우려가 있다는 점을 고려하는 것이 중요합니다.
Embarcadero® DB optiomizer™ 의 튜닝 기능에서는 힌트 삽입과 SQL 수정 기능이 모두 제공되므로 DBA 나 개발자는 선호하는 방식 대로 사용할 수 있습니다. DB optimizer 는 SQL 문을 자동으로 조사한 후 적용 가능한 힌트와 SQL 수정을 동시에 제안합니다. 이때, SQL 수정인 경우 배경색이 다르게 표시되는 데 그 이유는 결과 값이 달라질 가능성이 있다는 (예를 들어, 유효한 결합 조건이 빠진다거나 하는) 점을 사용자에게 알리기 위함입니다.
그림1: DB 옵티마이저 에서는 힌트 삽입과 SQL 수정 모두 이용 가능합니다
3. Embarcadero Technologies - 3 -
데브기어 기술자료 tech.devgear.co.kr 데브기어 홈페이지 www.devgear.co.kr 문의 ask@embarcadero.kr
보다 빠른 SQL 튜닝과 분석을 위한 새로운 툴
SQL
튜
닝,
분
석
툴
SQL 튜닝의 신기술-인덱스 분석과 비주얼 SQL 튜닝
대부분의 SQL 튜닝 툴은 힌트 삽입과 SQL 수정 수준에 머무르고 있지만, DB optimizer의 분석 튜닝 수준은 한발 더 나아가 있습니다.
인덱스 분석 기술 수준이 높고 비주얼 SQL 튜닝(VST) 다이어그램 이라는 특유의 혁신적 기술이 제공됩니다. 인덱스 분석 (Index Analysis)은 SQL 실행 경로를 완전하게 조사한 후 사용되고 있는 인덱스, 사용될 수 없는 인덱스, 무시된 인덱스에 대해 DBA와 개발자가 효과적으로 파악할 수 있도록 해줍니다. 게다가, 인덱스가 빠져 있는 경우, 최적인 성능을 얻을 수 있도록 추천 인덱스를 제시합니다. VST 다이어그램에는 SQL 문에서 사용되고 있는 조인 (join) 관계 뿐만 아니라 테이블과 뷰의 인덱스와 제약 조건 (Constraint)이 표시됩니다. 따라서 SQL 이나 스키마(schema)의 튜닝 포인트와 데이터베이스 전반의 성능 향상 요소를 빠르게 찾을 수 있습니다.
그림 2: [SQL Analysis] 페이지에서는 Visual SQL Tuning 다이어그램과 인덱스 분석이 표시됩니다
고도의 인덱스 분석
SQL 문과 그 변수(사용되는 테이블과 열, 조인 조건과 필터 조건, WHERE 구문 순서 등)가 주어지면, 데이터베이스의 내장 옵티마이저의 경우 인덱스 정보를 실행 경로의 각 단계별로 이용되는 것에 한하여 보여 줍니다. 하지만 DB 옵티마이저는 인덱스에 관한 정보를 4개로 나누어 보여줍니다. 즉, 사용되고 있는 인덱스(녹색), 존재는 하지만 데이터베이스의 내장 옵티마이저가 사용하지 않은 인덱스(청색), 존재는 하지만 "WHERE 구문"을 볼 때 전혀 사용 여지가 없는 인덱스(회색), 테이블에 지금은 없지만 DB 옵티마이저가 제시하는 추천 인덱스(오렌지색)가 4 개로 나누어 다르게 표시됩니다.
그림 3: 분류 된 인덱스 분석 결과가 컬러로 표시됩니다
인덱스가 필요하지만 존재하지 않는 경우, DB 옵티마이저에서는 버튼 클릭을 통해 해당 추천 인덱스를 바로 생성할 수 있습니다. 또한 인덱스가 사용되지 못하는 경우가 언제인지를 이해할 수 있으면 인덱스 활용에 큰 도움이 됩니다. 예를 들어, 개발자가 쿼리 성능을 향상시키려고 인덱스를 넣고 난 후, 실제로 DBMS의 내장 옵티마이저가 새로 만들어진 인덱스를 원하는 쿼리에서 사용하지 않는다는 것을 파악할 수도 있습니다.
4. Embarcadero Technologies
데브기어 기술자료 tech.devgear.co.kr 데브기어 홈페이지 www.devgear.co.kr 문의 ask@embarcadero.kr
보다 빠른 SQL 튜닝과 분석을 위한 새로운 툴
이렇게 된다면 개발자는 내장 옵티마이저가 활용할 수 있도록 인덱스를 다시 고치거나 혹은, 사용이 되지 않는 새 인덱스를 완전히 삭제해 버릴 수도 있을 것입니다.
비주얼 SQL 튜닝(VST) 다이어그램
DB optimizer는 SQL 문을 해석한 후 쿼리에 포함되어 있는 테이블과 뷰 그리고 그 인덱스와 제약을 분석하여, 쿼리를 그래픽으로 표시 합니다. 표시되는 VST 다이어그램은 요약 모드, 상세 모드로 선택적으로 표시됩니다. DBA 나 개발자는 카테시안 조인, 암묵적인 카테시안 조인, 다 대 다 관계 조인 등 스키마 (schema) 설계의 결점을 직관적으로 파악할 수 있습니다. VST 다이어그램을 보면 SQL 문이 어떻게 구성되어 있는 지를 빠르게 파악할 수 있으므로 트러블 슈팅과 분석이 더욱 빠르게 진행될 수 있습니다. 이 것은 DBA 가 조직간 협업을 할 때에도 유용한 기능으로써 데이터 아키텍트와 설계 협의를 시작할 때 직관적인 커뮤니케이션에서부터 바로 할 수 있게 됩니다.
그림 4: VST 다이어그램에서는 쿼리나 schema 설계(카테시안 조인 등)가 한눈에 파악됩니다
위 그림은 카테시안 조인이 발견하고 DB optimizer가 분석 결과에 근거하여 성능의 문제점을 해결하도록 쿼리를 고치는 예시입니다.
결론-SQL튜닝의 모범 사례
선택의 순간에 직면했을 때에는 항상 한 걸음 물러서서 기존의 워크플로우를 보고 각 단계별로 모범 사례들을 적용해 가는 것이 좋은 방법입니다. SQL로 인해 발생되는 데이터베이스 병목의 원인을 찾아내는 최선의 방법은 우선 프로 파일링 작업에서부터 시작하는 것입니다. 이를 통해 성능이 좋지 않은SQL 코드를 DB optimizer에서 빠르게 식별합니다. 해당 SQL 코드는 직접 튜너의 [Input] 탭으로 불러들일 수도 있습니다. 그 다음 단계인 [Overview] 탭에서는, SQL 수정과 힌트 삽입을 이용한 서로 다른 케이스를 자동 생성하고 그 결과를 분석할 수 있습니다. DB optimizer 의 SQL 부하 테스트 기능인 로드 에디터 (Load Editor)에서는, 병렬 세션과 다수의 실행을 동시에 시뮬레이션 하고, 데이터베이스의 프로
그림 5: DBA나 개발자가 SQL 최적화 요구를 해결하는 데 필요한 툴들이 각 탭에서 제공됩니다.
5. Embarcadero Technologies - 5 -
데브기어 기술자료 tech.devgear.co.kr 데브기어 홈페이지 www.devgear.co.kr 문의 ask@embarcadero.kr
보다 빠른 SQL 튜닝과 분석을 위한 새로운 툴
SQL
튜
닝,
분
석
툴
파일링을 통해 튜닝 전의 SQL 와 튜닝 후의 SQL 에 대해 성능의 향상 결과를 비교 평가할 수 있습니다. 기존의 튜닝 방법으로 불충분하거나 재테스트 한 후에도 원하는 수준에 이르지 않는 경우, [Analysis] 탭을 통해 고도의 튜닝 방법을 적용할 요소를 파악할 수 있습니다.
엠바카데로 테크놀로지는, 1993년에 설립한 데이터베이스 툴 제작사입니다. 2008년에 볼랜드의 개발툴 부문 「CodeGear」를 합병하였습니다. 현재는 애플리케이션 개발자와 데이터베이스 기술자가 다양한 환경에서 소프트웨어 애플리케이션을 설계, 구축, 실행하기 위한 툴을 제공하는 최대 규모의 독립계 툴 제작사입니다. 미국 기업의 총수입 랭킹 「포춘 100」중 90개 기업과 전세계 300만 이상의 고객이, 엠바카데로의 RAD Studio®, Delphi®、C++Builder® 등 개발툴 제품과 ER/Studio®、 DBArtisan®, RapidSQL®, DB PowerStudio® 등 데이터 모델링 및 DB관리 제품을 채용해, 생산성의 향상과 혁신적인 소프트웨어 개발을 실현하고 있습니다. 엠바카데로 테크놀로지스는, 샌프란시스코에 본사를 두고, 세계 각국에 지사를 전개하고 있습니다. 보다 자세한 내용은, http://www.devgear.co.kr를 참고하시기 바랍니다.