| ||||||||||||||||||||||||||||||||||||||
여러
통계는
데이터베이스를
튜닝한
시스템이
그렇지
않은
시스템보다 20% 더
높은
성능을
낼
수
있음을
보여줍니다. 그러나
프로덕션
시스템을
잘못
튜닝하면
위험할
수
있습니다. 이
문서에서는 Linux®, UNIX® 및 Windows®용 IBM DB2® 환경에서
수행할
수
있는
데이터베이스
성능
튜닝
사례에
대해
다룹니다. 데이터베이스
성능
튜닝에
직접
적용할
수
있는
유용한
기술을
얻을
수
있을
것입니다.
원문 게재일 : 20011년 7월 28일
원문
출처 : http://ibm.co/mXpvV3
목차
l 개요
l 문제 발견
l 데이터베이스 서버 정보 수집
l 데이터베이스 사용 정보 수집
l 데이터베이스 정보 분석
→ SQL 문
분석
→ 교착 상태 분석
→ 버퍼풀 분석
→ 메모리 분석
→ 테이블스페이스 및 테이블 분석
l 튜닝 활동 설계
l 튜닝 결과 구현 및 평가
l 결론
개요
잘못
설계된
시스템은
가동
직후부터
성능
문제가
발생할 수
있습니다. 튜닝이
잘된
시스템조차도
장기간
작동시키거나
주요 기능을 변경하게 되면 성능
문제에
부딪힐
수 있습니다. 시스템
튜닝은
시스템
관리자에게
피할
수
없는
업무입니다. 특히
대다수
애플리케이션
시스템의
주요한
부분인
데이터베이스
성능
튜닝은
매우
중요한
작업입니다.
여러
통계들은
데이터베이스를
튜닝한
시스템이
그렇지
않은
시스템보다 20% 더
높은
성능을
낼
수
있음을
보여줍니다. 그러나
프로덕션
시스템을
잘못
튜닝하면
위험할
수
있습니다. 이
문서에서는 Linux, UNIX 및 Windows용 IBM DB2 환경에서
수행할
수
있는
데이터베이스
성능
튜닝
사례에
대해
다룹니다.
이
사례
연구에서
튜닝한 시스템은
백엔드
데이터베이스로
DB2를
사용하는 JIRA Enterprise 패키지
기반의
워크플로우
애플리케이션입니다. 이
애플리케이션은 2가지
모드, 즉
야간
배치
모드와
주간 OLTP 모드로
작동합니다. 야간
배치
시간
동안은
일반
텍스트
파일
형식의
외부
데이터를
데이터베이스로
전송하는
일련의
쉘
스크립트가
실행됩니다. 주간 OLTP 시간
동안에는 JIRA에
정의된
이 비즈니스
데이터
워크플로우를
운영자가
처리합니다.
고객은 이 애플리케이션을 1년 정도 가동시킨 후 문제 발생 건수가 낮아지지 않음을
발견했습니다.
조사
결과, 데이터베이스
교착
및 JIRA 파일
잠금
시간초과
같은
성능
문제가
일부
문제의
원인으로
밝혀졌습니다. 워크로드는
매년 5%씩 증가하는 것으로 계약되어 있었습니다.
시스템
성능을 높이지 못했다면 점점 더 많은 성능 문제점이 발생 했을 것입니다.
이제
성능
튜닝은
필수였습니다.
시스템
성능 튜닝을 수행하기 위해서는 먼저 성능 문제의 기원이 어디인지 알아내야 합니다.
Linux에서
사용되는 Nigel's performance MONitor (NMON) 은 CPU 활용률, 메모리 활용률, 디스크 사용률, 자원 사용량이 많은
주요 프로세스 등 핵심적인 성능 데이터를 수집하기에 유용한 툴입니다.
NMON은
시스템의 각 서버에 대한 성능 정보를 수집하는 데 사용됩니다.
수집된
NMON 데이터를 검토한 결과 2가지 성능 문제가 식별되었습니다.
데이터베이스
성능 튜닝은 보통 다음 단계로 구성됩니다.
다음 섹션에서 각 단계를 자세히
살펴봅니다.
이
단계에서는 데이터베이스 서버의 하드웨어 및 소프트웨어 정보와 데이터베이스 구성을 수집합니다.
다음과
같은 정보를 수집해야 합니다.
정보가 많으면 많을수록 좋습니다.
이
단계에서 수집한 모든 정보는 이후 분석 단계에 큰 도움이 될 수 있습니다.
예를
들어, db2look 및 테이블스페이스 정보는 디스크 사용 문제의 원인으로 모든 사용자
데이터
테이블이
동일한 디스크의 동일한 테이블스페이스에 생성되어 있었는지를 파악할 수
있습니다.
데이터베이스
사용 정보를 수집하는 두가지 방법으로 스냅샷을 생성과 이벤트
모니터링이
있습니다. 두 방법 모두 버퍼풀 활동, 잠금 상태, SQL 문 정보 같은 실시간 데이터베이스 사용 정보를 수집합니다.
그러나
이 두 방법은 모니터링 메커니즘이 서로 다르기 때문에 해당 상황에 따라 적합한 방법을 선택해서 사용해야 합니다.
스냅샷은
말 그대로 특정 시점에 데이터베이스의 인스턴트 정보를 캡처하는 방법입니다.
주기적으로
캡처된 스냅샷을 사용하여 동향을 관찰하거나 잠재적인 문제점을 예측할 수 있습니다.
스냅샷은
특정 기간에 발생한 문제점을 해결하거나 임시 데이터베이스 상태 검사에 유용합니다.
스냅샷은
이벤트 모니터보다 자원 소모량이 적습니다.
반면에
이벤트 모니터는 이벤트를 기반으로 합니다.
이벤트
모니터는 지정된 기간에 특정 이벤트가 발생할 때마다 레코드를 작성합니다.
스냅샷에
비해, 이벤트 모니터는 데이터베이스 오브젝트 기반의 통계(예를 들어 데이터베이스, 테이블, 테이블스페이스에 대한 통계)를 더 많이 제공할 수
있습니다.
모니터링은
모니터 기간 동안 전체 데이터베이스의 사용 정보를 수집을 지속적으로 수행합니다. 이 지속성 때문에, 대상 시스템의 사용률이 높은 경우 모니터링에
엄청난 양의 자원이 소모될 수 있습니다.
프로덕션
시스템을 조사할 때는 모니터링 때문에 시스템이 손상되는 일이 없도록 방지해야 합니다.
모니터링으로
인한 성능 저하를 줄이는 방법을 살펴보기 전에 먼저 여러 이벤트 모니터 설정 옵션, 즉 테이블 이벤트 모니터, 파일 이벤트
모니터
및 파이프 이벤트 모니터에 대해 알아보겠습니다.
각각의
이름에서 알 수 있듯이, 이러한 이벤트 모니터는 이벤트가 작성되는 위치(SQL 테이블, 파일 또는 명명된 파이프)에 따라
서로
식별됩니다.
파이프
이벤트 모니터는 명명된 파이프에서 데이터를 읽어올 프로그램이 필요한 관계로 실제로 자주 사용되지 않습니다. 따라서 이 문서에서는 테이블 모니터와
파일 이벤트 모니터를 중점적으로 다룹니다.
표
1. 이벤트 모니터로 인한 성능 저하를 줄이는 방법
아래 두 가지 방법을 적용하면 프로덕션 성능 저하의 위험을 한층 더 줄일 수 있습니다.
위에서
수집한
모든
정보를
아래의
다양한
분석
방법으로
분석할
수
있습니다.
SQL 문
분석에
주로
사용되는
정보
자원은
명령문
이벤트
모니터입니다. 이벤트
파일을
사용해서
이벤트를
모니터할
경우, 목록 1에서와
같이 db2evmon명령으로
출력
형식을
지정할
수
있습니다.
목록 1. db2evmon 명령
결과 항목은 목록 2에 나와
있습니다.
목록
2. 명령문 이벤트 샘플 항목
Text 행에는
실행한 SQL 문이
나와
있습니다. Elapsed Execution Time 은
해당 SQL 문을
실행하는
데
소요되는
시간을
표시합니다. 같은
명령문에
대한
실행
경과
시간을
모두
합하면
각 SQL 문에
대한
누적
실행
시간을
계산할
수
있습니다. 이렇게
계산한
누적
실행
시간이
가장
긴
명령문이 SQL 문
분석의
대상이
됩니다.
IBM은 SQL 문
분석에
필요한
일련의
툴을
제공합니다. Visual Explain, db2exfmt 및 db2expln은
각
명령문의
액세스
플랜을
검토하는
데
유용합니다. db2advis 툴은
실행
성능을
최적화하는
데
도움이
되도록
새롭게
작성해야
할
인덱스에
대한
권장사항을
제공합니다.
교착
상태
이벤트
모니터는
교착
상태의
발생
원인과
각
발생
이력에
대한
자세한
정보를
제공합니다. 목록 3은
교착
상태
이벤트의
샘플
항목을
제공합니다.
목록 3. 교착 상태 이벤트 샘플 항목
목록 3은
교착
상태에
빠진 2개의
잠금, 각
잠금의
유형
및
해당 SQL 문을
보여줍니다. 관련된
명령문을
수정하여
교착
상태의
발생
횟수를
줄일
수
있습니다.
* 다음 회에서 데이터베이스
정보 분석 방법 중 버퍼풀 분석, 메모리 분석, 테이블스페이스 및 테이블 분석에 대해 알아보고 튜닝 활동 설계 및 튜닝 결과 구현 및 평가 에
대한 설명이 이어집니다.
리소스
제품
및 기술
| ||||||||||||||||||||||||||||||||||||||
2011년 12월 11일 일요일
사례 연구: 고성능을 위한 DB2 튜닝(1)
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기