정보관리기술/데이터베이스

데이터베이스 튜닝

아이티신비 2024. 2. 10. 10:00

문제 3) 데이터 용량이 증가할수록 데이터베이스 튜닝(Tuning)의 필요성이 증가하고 있다. 데이터베이스 튜닝에 대한 아래의 사항을 설명하시오.

가. 데이터베이스 튜닝의 개념과 목적

나. 데이터베이스 설계 단계 튜닝 기법

다. 힌트(Hint)의 유형

 

답)

 

1. 데이터베이스 튜닝의 개념과 목적

가. 데이터베이스 튜닝의 개념

  • 데이터베이스의 응용, 데이터베이스 자체, 운영체제의 조정 등을 통해 최적의 자원으로 최적의 성능을 얻을 수 있도록 개선하는 작업

 

나. 데이터베이스 튜닝의 목적

  • 업무적인 환경과 시스템적 환경에 적합한 데이터베이스 파라미터를 설정
  • 데이터베이스에 접근하는 SQL 문장을 가능한 한 디스크 블록에 최소로 접근하도록 함
  • 디스크 블록에서 한번 읽어오는 데이터는 가능하면 메모리 영역에 보관
  • 모든 사용자의 SQL 문장은 공유 가능하도록 명명 표준을 준수하여 작성
  • 잠금(Lock) 발생이 최소가 되도록 함

 

2. 데이터베이스 설계 단계 튜닝 기법

 
구분
설명
반정규화
  • 데이터 정합성 유지 수단 마련 후, 성능 고려하여 테이블, 컬럼 반정규화 수행
파티셔닝
  • 대용량 테이블의 경우 필요한 데이터에 대한 테이블 분할 검토
이력테이블 관리
  • 이력 데이터의 시작과 종료, 현재 진행 상태 등을 명확하게 명시하여 성능 보장
Table 접근 방식 결정
  • 접근 유형에 따라 Full Scan, B Tree Index, Bitmap Index, Clustering, Hashing 적용검토
적정 인덱스 지정
  • 테이블 조회를 주로 하는지 입력, 수정, 삭제 작업이 주로 발생하는지를 고려하여 적당한 인덱스 개수 지정
복제테이블 생성
  • 분산 DB의 경우 원격 DB를 이용할 때 성능 저하가 예상된다면 스냅샷을 이용한 복제 테이블 생성
공유 데이터 관리
  • 빈번하게 공통적으로 사용하는 데이터의 접근을 쉽게 하기 위해 어플리케이션의 메모리에 상주시키고 함수를 사용하여 코드 변환하도록 유도
인덱스 키 규칙
  • PK는 일반적으로 지정된 순서대로 인덱스를 생성하므로 키를 구성하는 컬럼 순서를 복합 컬럼 인덱스를 지정하는 규칙에 따라 나열함
FK 잠금 회피
  • FK에 대해서는 가급적 인덱스를 생성하여 전체 스캔이 발생하는 경우와 불필요하게 발생하는 잠금 회피
테이블스페이스 분리
  • 테이블을 위한 테이블스페이스와 Index 용 테이블 스페이스 분리
롤백세그먼트 다중 구성
  • 롤백 세그먼트 경합을 피하기 위해 여러 개로 구성

3. 힌트(Hint) 유형

 
구분
힌트
설명
최적화
접근 목적
ALL_ROWS
  • 전체 리소스를 최소화하는 비용 기반 모드로 실행
FIRST_ROWS
  • 첫 번째 로우를 가장 빨리 반환하는 접근 방법으로 실행
RULE
  • 옵티마이저가 규칙 기반 모드로 실행 계획을 수립하게 함
접근 방법
FULL
  • 지정한 테이블에 대한 전체 스캔 방식으로 실행
ROWID
  • 지정한 테이블에 대해 rowid를 이용하여 실행
HASH
  • 클러스터가 된 오브젝트에 적용되며, 지정한 테이블에 대해 해시스캔을 수행
INDEX
  • 인덱스를 이용하여 실행
INDEX_JOIN
  • 인덱스 조인을 이용하여 실행
INDEX_FFS
  • 전체 인덱스 스캔을 빠르게 수행
NO_EXPAND
  • 'OR'나 'IN'이 WHERE 절에 있을 때 비용 기반 모드의 옵티마이저는 'OR'나 'IN'에 기술된 비용을 참조하지 않고 실행
조인 순서
ORDERED
  • FROM 절에 기술한 테이블 순서대로 실행
STAR
  • STAR QUERY 방식으로 실행된다. 최소한 테이블이 세 개는 존재해야 함
조인 방법
USE_NL
  • 기준이 되는 테이블 로우를 이용하여 다른 테이블에서 기준에 맞는 로우에 접근할 때 Nested Loop Join 방법을 사용
USE_MERGE
  • 각각의 테이블을 먼저 정렬하여 정렬된 순서대로 비교하는 SortMerge Join 방식으로 실행
USE_HASH
  • 기준이 되는 테이블 로우를 이용하여 다른 테이블에서 기준에 맞는 로우에 접근할 때 Hash Join 방법으로 실행
DRIVING_SITE
  • 다른 지역에 존재하는 정보를 이용하여 실행 계획을 수립하게 함
LEADING
  • 조인 순서에서 지정된 테이블을 가장 먼저 사용
HASH_AJ
  • 부정형의 조인 방법(Anti Join)을 Hash Join으로 실행
HASH_SJ
  • Exists 서브쿼리 문장에서 Hash Semi-Join으로 실행
병행 수행
PARALLEL
  • 병렬 처리
NOPARALLEL
  • 병렬 처리를 이용하지 않음
부가 힌트
CACHE
  • 최근에 이용한 데이터를 데이터 버퍼 캐시에 보관하여 다시 동일한 데이터에 접근할 때 디스크 I/O를 줄임
NOCACHE
  • 다른 테이블에서 데이터버퍼 캐시를 이용할 수 있도록 지정된 테이블은 캐시되지 않음


 

공감과 댓글은 아이티신비에게 큰 힘이 됩니다.

블로그 글이 유용하다면 블로그를 구독해주세요.♥

'정보관리기술 > 데이터베이스' 카테고리의 다른 글

샤딩(Sharding)  (23) 2024.02.11
데이터 품질관리  (20) 2024.02.11
CAP이론의 한계와 PACELC 이론 / ①  (0) 2024.02.10
Column Family 데이터베이스 / ①  (3) 2024.02.09
공간DB  (3) 2024.02.09