본문 바로가기
🖥Web/🔥DB & SQL

[DB & SQL] SQL 고급활용 및 튜닝 / 고급 SQL 튜닝

by 후눅스 2022. 5. 26.
반응형

SQL 고급활용 및 튜닝 / 고급 SQL 튜닝

 

소트와 관련된 오퍼레이션 유형

  1. Sort Aggregate
    • 전체 로우를 대상으로 집계를 수행할 때 나타나며, Oracle 실행계획에 sort라는 표현이 사용됐지만 실제 소트가 발생하진 않는다.
  2. Sort Order By
    • 정렬된 결과집합을 얻고자 할 때 나타난다.
  3. Sort Group By
    • Sorting 알고리즘을 사용해 그룹별 집계를 수행할 때 나타난다.
  4. Sort Unique
    • 선택된 결과집합에서 중복 레코드를 제거하고자 할 때 나타난다. Union 연산자나 아래와 같이 Distinct 연산자를 사용할 때가 대표적이다.
  5. Sort Join
    • Sort Merge Join을 수행할 때 나타난다.
  6. Window Sort
    • 윈도우 함수를 수행할 때 나타난다.

 

Oracle에서 Direct Path Insert 방식으로 데이터를 입력하는 방법

  • insert select 문장에 /*+ append */ 힌트 사용
  • 병렬 모드로 insert
  • direct 옵션을 지정하고 SQL*Loader(sqlldr)로 데이터를 로드
  • CTAS(create table ... as select) 문장을 수행

 

대량의 데이터를 일반 Update문으로 갱신하면 상당히 오랜 시간이 소요될 수 있다. 다음과 같은 이유 때문이며, Delete문일 때도 마찬가지다.

  • 테이블 데이터를 갱신하는 본연의 작업
  • 인덱스 데이터까지 갱신
  • 버퍼 캐시에 없는 블록을 디스크에서 읽어 버퍼 캐시에 적재한 후에 갱신
  • 내부적으로 Redo와 Undo 정보 생성
  • 블록에 빈 공간이 없으면 새 블록 할당(-> Row Migration 발생)

 

파티셔닝이 필요한 이유

  • 관리적 측면
    • 파티션 단위 백업, 추가, 삭제, 변경
  • 성능적 측면
    • 파티션 단위 조회 및 DML 수행, 경합 및 부하 분산

 

파티션 인덱스

  • Local Prefixed 파티션 인덱스
  • Local NonPrefixed 파티션 인덱스
  • Global Prefixed 파티션 인덱스
  • Global NonPrefixed 파티션 인덱스 (-> Oracle Not Support)
  • 비파티션(NonPartitioned) 인덱스

 

배치 프로그램의 특징

  • 사용자와의 상호작용 없이
  • 대량의 데이터를 처리하는
  • 일련의 작업들을 묶어
  • 정기적으로 반복 수행하거나
  • 정해진 규칙에 따라 자동으로 수행

 

pq_distiribute 힌트를 사용함으로써 옵티마이저의 선택을 무시하고 사용자가 직접 조인을 위한 데이터 분배 방식을 결정할 수 있다.

  • 옵티마이저가 파티션된 테이블을 적절히 활용하지 못하고 동적 재분할을 시도할 때
  • 기존 파티션 키를 무시하고 다른 키 값으로 동적 재분할하고 싶을때
  • 통계정보가 부정확하거나 통계정보를 제공하기 어려운 상황(-> 옵티마이저가 잘못된 판단을 하기 쉬운 상황)에서 실행계획을 고정시키고자 할 때
  • 기타 여러 가지 이유로 데이터 분배 방식을 변경하고자 할 때

 

 

 

 

 

 

 

 

 

참조:

SQL자격검정실전문제

 

 

 

 

반응형