제6장 고급 SQL 튜닝
제1절 소트 튜닝
제2절 DML 튜닝
제3절 데이터베이스 Call 최소화
제4절 파티셔닝
제5절 대용량 배치 프로그램 튜닝
제6절 고급 SQL 활용
제1절 소트 튜닝 |
정렬 작업의 성능 최적화 | ||
1. 인덱스 활용 | 정렬작업이 컬럼에 인덱스 설정 | ||
2. 메모리설정 | 정렬작업에 할당된 메모리를 조정 | ||
3. limit 사용 | 필요한 데이터만 정렬 불필요한 정렬작업 최소화 | ||
4. 소트머지 알고리즘 최적화 | |||
제2절 DML 튜닝 |
|||
1. 인덱스 관리 | 인덱스 많으면 DML 성능이 저하, 필요한 인덱스만 유지 | ||
2. 배치처리 | 대량의 DML 작업은 배치로 처리 성능최적화 | ||
3. 트랜젝션 관리 | 트랜잭션 크기 관리 | ||
4. 잠금관리 | 잠금 경합을 최소화 | ||
제3절 데이터베이스 Call 최소화 |
네트워크 트래픽, 서버 부하 | ||
1. 배치호출 | 여러개SQL문을 하나의 배치로 처리, 호출횟수 줄임 | ||
2. 프로시저 사용 | 복잡한 로직 프로시저 처리 | ||
3. 결과집합최적화 | 필요한데이터만 조회 | ||
4. 연결관리 | 연결을 재사용 | ||
제4절 파티셔닝 |
대용량 테이블을 작은 파티션으로 나눠관리 | ||
Oracle 지원 | 1. 범위 파티셔닝 | 데이터 범위에 따라 파티션 나눔 | |
2. 해시 파티셔닝 | 해시함수를 사용 균등분산 | ||
3. 리스트파티셔닝 | 특정값 목록에 따라 | ||
4. 복합파티셔닝 | 여러 파티셔닝 기법 조합 | ||
파티션프루닝( Pruning ) | 필요없는파티션 건너띄고 필요한파티션만 스캔 | ||
정적 파티션프루링 | 액세스할 파티션을 컴파일 시점에 미리 결정, 파티션키컬럼을 상수조건으로 작동 | ||
동적 파티션프루링 | 액세스할 파티션을 실행시점에 결정, 파티션키컬럼 바인드변수로 조회 NL Join 할때도 Inner테이블이 조인컬럼 기준으로 파티셔닝되있으면 푸르닝동작 |
||
인덱스 파티셔닝 | |||
Local 파티션 인덱스 | |||
Global 파티션 인덱스 | |||
Prefixed 파티션 인덱스 | |||
NonPrefiexed 파티션 인덱스 | |||
인덱스 파티셔닝 가이드 | 인덱스를 파티셔닝 | ||
비파티션 = 단일인덱스 Non-Partitioned Index |
1. 파티션 키컬럼이 조건절에 누락시 비효율적 2. NL Join에서 파티션 키에 대한 넓은 범위검색 3. sort order by 대체효과 상실 4. 테이블 파티션이동, 삭제시 unusable 주의 |
||
Global Prefixed Index |
1. 인덱스 경합 분산에 효과적 2. 여러 Local 인덱스 파티션을 액세스 하는것이 비효율일때 3. 테이블파티션 이동,삭제시 unusable 주의 |
||
Local Prefixed | 1. 관리적측면유용 2. 이력성 테이블 주로 관리하는DB 효과정 3. 파티션 키 equal 조건일때 유용 조건없을때 전체 엑세스 4. 파티션 키 범위 일때 분리 |
||
Local Non Prefixed | 1. 관리적 측면에서 유용 2. 이력성데이터 효과적 3. 키컬럼 조건절일때 유용 4. 조건없을때 전체 엑세스 5. 조건이 범위면 local prefixed 보다 유리, 그래도 좁은범위검색이어야함 |
||
제5절 대용량 배치 프로그램 튜닝 |
병렬도(Degree of parallelism) 를 32로 지정, 5분소요되는것을 병렬처리 없이 10분소요가 나을 수있다. | ||
1. 병렬처리 | 인덱스 옵티마이저힌트 활용. | ||
2. 데이터 청크 | 데이터를 작은 청크로 나누어 처리 메모리사용최적화 | ||
3. 트랜잭션 크기조정 | |||
4. 재시도 로직 | 실패한 작업 재시도로직 구현 안정성 높임 | ||
제6절 고급 SQL 활용 |
|||
1. 윈도우 함수 | 복잡한 집계 분석 효율적으로 | ||
2. CTE Common Table Expressions |
쿼리 구조화, 가독성 높임 | ||
3. 재귀쿼리 | 재기 CTE사용 | ||
4. 다중테이블 조인 | 다중테이블 조인 최적화 | ||
'Data' 카테고리의 다른 글
[1028 SQL]Ⅲ. SQL 고급 활용 및 튜닝-제7장 Lock과 트랜잭션 동시성 제어 (0) | 2024.07.22 |
---|---|
[1028 SQL]Ⅲ. SQL 고급 활용 및 튜닝-제5장 SQL 옵티마이저 (0) | 2024.07.19 |
[1028 SQL]Ⅲ. SQL 고급 활용 및 튜닝-제4장 조인 튜닝 (0) | 2024.07.15 |
[1028 SQL]Ⅲ. SQL 고급 활용 및 튜닝-제3장 인덱스 튜닝 (0) | 2024.07.05 |
[1028 SQL]Ⅲ. SQL 고급 활용 및 튜닝-제2장 SQL 분석 도구 (0) | 2024.07.04 |