ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Oracle] SQL 튜닝
    SQL 2023. 6. 12. 16:38

    1. PLAN 생성 과정

    ① 테이블 통계정보 갱신

         각 DB설정에 따라 테이블 통계정보를 갱신하는 주기가 있다. 

         가장 최근에 통계정보가 갱신된 날짜는 Last analyzed 를 보면 된다. 

         통계정보가 자동으로 갱신이 되면 옵티마이저가 plan 을 새로 짜게 된다. 

         sql id 당 childnum 만큼의 plan 을 뽑는다. 

         대용량 테이블에서 테이블 통계정보가 자주 갱신된다면
         실행계획도 그때마다 바뀌게 되어 가장 최적의 plan 으로 실행되지 않을 수 있다. 

         그러므로 대용량 데이터일 경우 가장 최적의 plan 이 계속 유지되도록 통계정보를 갱신하지 않는 방법이 좋다. 

     

         튜너분이 추천해준 것은 다음과 같다. 

         1) 데이터량 1000건 미만  → 갱신 X

         2) 데이터량 100만건  → 갱신 O

         3) 데이터량 1억건 이상  → 갱신 X

         갱신을 하지 않으면 언제 갱신을 하느냐? 컬럼이나 인덱스가 추가될때 그때만 갱신하면 됨. 

     

       

    ② 인덱스 구조

     

     

     

     

     

    2. 메모리 적재

    자주 사용하는 쿼리들은 메모리에 상주해 있게 된다. 

    그 중에 몸집이 큰 애들이 있으면 다른 쿼리들은 메모리에 못들어오게 됨. 

     

    메모리나 디스크를 늘리거나 쿼리 몸집을 작아지게 하기 위해 튜닝을 하면 해결이 됨. 

     

     

     

     

     

    3. 각 분야별 명칭 

    AA (Application Architecture)  개발자
    DA (Data Architecture) PM (모델링, 파티션, 인덱스)
    TA (Tech Architecture) 외주

     

     

     

     

     

     

    4. 대용량 테이블 관리

     

    ① 가로 : 파티션 분리

    ② 세로 : 배치테이블, 집계테이블

    ③ PURGE : 자주 사용되는 데이터만 분리하는 방식. 잘 안쓰이는 데이터(ex. 10년전 데이터)는 다른 테이블에 따로 저장하고 본 테이블에는 삭제하여 본 테이블에 자주 사용하는 데이터만 놔둠. 

     

     

     

     

     

     

    * 출처 : SQL 전문 튜너

    'SQL' 카테고리의 다른 글

    [Oracle] 파티션  (0) 2023.06.12
    [Oracle] Index (인덱스)  (0) 2023.06.12
    [MyBatis][링크스크랩] #와 $의 차이점  (0) 2021.09.14
    [MSSQL] 입력값 순서대로 조회하기  (0) 2021.08.24
    [MSSQL] 현재 날짜, 시간 구하기  (0) 2021.08.12

    댓글

Designed by Tistory.