새소식

반응형
밥벌이/데이터베이스

튜닝의 개요

  • -
반응형
  • 튜닝의 정의
    • 특정한 응용을 시스템 성능을 향상시키기 위해 다양한 파라미터들과 설계 선택들을 조정하는 것
    • 데이터베이스 응용 프로그램, 데이터베이스 자체, 운영체계 등의 조정을 통해 데이터베이스 관리 시스템의 성능을 향상시키는 작업
    • 병목 현상을 찾아서 제거함으로써 튜닝을 잘 수행할 수 있음
         
  • 튜닝의 기대 효과
    • 작업 처리량과 응답 속도의 향상
    • 장재적인 시스템 장애 방지
    • 유지보수 비용 절감
    • 하드웨어 증설에 대한 투자비 절감
    • 개발자 능력 향상
         
  • 튜닝의 목표
    • 데이터베이스에 접근하는 SQL문의 실행 시 디스크 블록에 대한 접근 횟수를 최소화
      데이터가 포함된 디스크를 적절히 분산시켜 디스크 입.출력이 집중되는 것을 막음
    • 디스크 블록에서 한 번 읽어온 데이터는 가능하면 메모리 영역에 보관하여 다시 그 데이터가 필요할
      때 메모리에서 신속히 가져오게 함
    • 데이터를 디스크로부터 메모리로 로드하여 가져오는 것에 비해, 메모리에서 데이터를 직접 읽어오는 것이 훨씬 빠르기 때문에 캐시(Cache) 용량을 충분히 확보
    • 모든 SQL문은 공유가 가능하도록 대소문자 일치 등의 명명 표준을 준수하여 작성
      처음 실행된 SQL문은 구문 검사, 실행 권한 검사와 같은 내부 파싱 절차를 거쳐 명명 규칙을 준수함으로써, 이러한 연산을 줄임
    • 여러 명의 사용자가 자원들을 안정적으로 접근할 수 있도록 허용하기 위한 잠금 기능의 사용을 최소화
      잠금이 최소한으로 발생하도록 트랜잭션을 분산시키는 방법을 사용
    •    
  • 튜닝의 3단계
    • 하드웨어
      I/O 속도를 빠르게 하기 위한 디스크 추가, 버퍼 히트를 향상시키기 위한 메모리 추가, 보다 빠른 프로세서로의 교체 등
    • 데이터베이스 시스템 파라미터
      • 버퍼의 페이징을 피하기 위해 버퍼 크기 설정, 로그 크기를 제한하기 위해 체크포인팅 간격 설정 등
      • 시스템이 자동적으로 튜닝을 수헹할 수 있음
    • 상위 수준 데이터베이스 설계
      스키마, 인덱스, 트랜잭션 등의 설계
    •    
  • 튜닝의 주요 기법
    • 접근 경로
      SQL의 접근 경로를 분석하여 이후 튜닝 기법의 기본 자료로 활용
    • 인덱스
      • 접근 경로 조사 후 성능이 효과적인 인덱스를 설정
      • 인덱스 설정 기준
        • SQL 조건문에 자주 등장하는 속성
        • 같은 값이 적은 속성(분포도가 10% 이하인 속성)
        • 조인에 참여하는 속성이나 값의 변경이 자주 일어나지 않는 속성
        • 적절한 기본키 및 외래키(조인의 연결 고리가 되는 속성) 선정
        • 분포도가 좋은 속성은 단독적으로 생성하여 활용도 향상
        • 자주 조합되어 사용되는 속성의 경우는 결합 인덱스 생성
        • 결합 인덱스의 속성 순서 선정은 DBMS에 따라 SQL 조건문의 검색 순서에 입각
        • 각종 접근 가능한 경우의 수를 만족할 수 있도록 인덱스간의 역할 분담
    • 조인
      데이터 분포 및 데이터 양에 따른 조인 전력 수립 및 적용
    • 클러스터
      정해진 속성을 기준으로 동일한 값을 가진 레코드를 같은 블록에서 저장하여 I/O를 최소화 하는 방법
    • 부분 범위 스캔(Partial Range Scan)
      주어진 모든 데이터를 처리하지 않고 일부만 처리하여 그 결과를 사용함으로써 수행 시간이 단축됨
    •    
  • 클러스터드 인덱스(Clustered Index)
    • 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식
    • 실제 데이터가 순서대로 저장되어 있어 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있음
    • 데이터 삽입, 삭제 발생 시 데이터 순서를 유지하기 위해 데이터를 재정렬해야 함
    • 릴레이션 당 하나의 크럴스터드 인덱스만 생성 가능
  • 비클러스터드 인덱스(Non-Clustered Index)
    • 인덱스 키만 정렬되어 있을 뿐, 실제 데이터는 정렬되지 않는 방식
    • 데이터를 검색하기 위해 먼저 인덱스를 검색하여 실제 데이터의 위치를 확인해야 하므로, 클러스터드 인덱스에 비해 검색 속도가 떨어짐
    • 릴레이션 당 다수의 비클러스터드 인덱스만 생성 가능
  • 결합 인덱스
    • 한 릴레이션 내에 존재하는 여러 속성들을 묶어 하나의 인덱스로 만든 것
    • 결합 인덱스 내에서는 검색 속도에 영향을 미치는 선행 속성의 선정이 중요
    • 선생 속성은 WHERE 절에서 항상 사용되고, '=' 로 비교되어야 하며, 분포도가 좋은 속성을 우선적으로 선택
    • 결합 인덱스를 사용하면 데이터의 분포도가 좋아져 검색 성능이 향상
반응형

'밥벌이 > 데이터베이스' 카테고리의 다른 글

튜닝의 타입  (0) 2011.03.11
튜닝의 종류  (0) 2011.03.11
성능 평가(Benchmarks)  (0) 2011.03.11
데이터베이스 회복의 개요  (0) 2011.03.10
데이터베이스 회복기법  (0) 2011.03.10
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.