SQL

[Oracle] SQL 튜닝

purecho 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 전문 튜너