-
[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