| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 튜닝 분석 툴
- 엑사 아키텍쳐
- 예외처리
- 리눅스 명령어
- oracle service
- PG 에서 힌트
- 리눅스
- 패키지
- PLSQL
- TRCSESS
- 아이티윌 수강 후기
- exadata 명령어
- 오라클
- oracle sh 작성법
- 유연수 강사님
- 파이썬
- library_cache
- SQ ENQ
- 부팅 시간 단축
- where절
- 데이터 이행
- hr_main.sql
- service 관리
- shared_pool
- index
- 튜닝
- 테이블 스페이스
- 오렌지 툴
- SQL
- 오라클 sql
- Today
- Total
목록SQL (27)
DBE 도토리 창고
SQL 튜닝은 단순히 쿼리 문법을 최적화하는 것을 넘어, 데이터베이스의 구조와 데이터의 특성을 깊이 이해하는 과정입니다. 특히, 대용량 데이터를 다루는 환경에서는 테이블을 효율적으로 분할하는 파티셔닝(Partitioning) 기법이 필수적입니다. 파티션 테이블을 적재적소에 활용하면 I/O 비용을 획기적으로 줄이고, 쿼리 성능을 비약적으로 향상시킬 수 있습니다. 이번 글에서는 파티션 테이블의 종류와 개념을 명확히 정리하고, 실제 오라클 SQL 코드를 통해 각 파티션의 생성 및 활용법을 상세히 알아보겠습니다. 또한, 여러분이 직접 학습하면서 궁금해하셨던 부분들을 복습 문제와 주의사항으로 담아 실무에 바로 적용할 수 있도록 구성했습니다. 대용량 테이블은 파티션 테이블로 재구성하세요대용량 테이블을 파티셔닝(Pa..
SQL 튜닝은 단순히 힌트(Hint) 몇 개를 추가하는 행위가 아닙니다. 데이터베이스가 어떻게 동작하는지, 실행 계획은 왜 그렇게 수립되는지, 그리고 데이터의 특성에 따라 어떤 접근 방식이 최적인지를 근본적으로 이해하는 과정입니다. 이번 글에서는 그 중 몇 개지 튜닝 기법들을 다루고자 합니다.1. UNION ALL 지옥에서 벗어나는 GROUPING SETS의 마법복잡한 통계 쿼리를 작성할 때, 여러 집계 결과를 합치기 위해 UNION ALL을 반복해서 사용하면 각 SELECT 문마다 테이블을 스캔하는 비효율을 초래합니다. GROUPING SETS는 한 번의 테이블 스캔으로 여러 GROUP BY 절의 결과를 한 번에 얻을 수 있어 성능을 획기적으로 개선합니다.실습1. UNION ALL (튜닝 전)다음 쿼리..
1. 인라인 뷰와 조인할 때 주의점: NO_MERGE 힌트🎯 핵심 개념: 인라인 뷰(Inline View)는 SQL 문 내부에 정의되는 서브쿼리로, FROM 절에서 테이블처럼 사용되는 임시적인 결과 집합입니다. 오라클 옵티마이저는 성능 향상을 위해 종종 인라인 뷰를 메인 쿼리에 병합(Merge)하여 단일 쿼리 블록으로 변환합니다. 이를 "쿼리 변환(Query Transformation)"이라고 합니다. 하지만 이러한 자동 변환이 항상 최적의 실행 계획을 보장하지는 않습니다. 때로는 인라인 뷰를 독립적으로 유지하여 특정 조인 순서나 접근 방식을 강제하는 것이 더 효율적일 수 있습니다. NO_MERGE 힌트는 옵티마이저가 인라인 뷰를 메인 쿼리에 병합하지 않도록 지시하는 역할을 합니다. 📝 용법 및 사례..
조인 튜닝의 핵심 포인트 2가지: Nested Loop Join🎯 튜닝 목표: 조인 성능 최적화를 위한 NESTED LOOP JOIN 이해 및 활용📝 이론 설명: 조인(Join)은 여러 테이블의 데이터를 결합하는 연산이며, 대용량 데이터베이스에서 성능 저하의 주범이 될 수 있습니다. 오라클에서 가장 흔히 사용되는 조인 방식 중 하나가 NESTED LOOP JOIN (NL JOIN)입니다.NL JOIN은 하나의 테이블(Driving Table, 선행 테이블)에서 먼저 데이터를 읽고, 읽어온 각 행에 대해 다른 테이블(Probed Table, 후행 테이블)을 반복적으로 검색하여 조인하는 방식입니다. 마치 이중 FOR 루프처럼 작동합니다.📌 핵심 포인트:선행 테이블 선택의 중요성: 선행 테이블의 결과 건..
기본 개념 복습: 제약 조건의 중요성 SQL 튜닝의 견고한 기반은 올바른 데이터 모델링과 제약 조건 설정에서 시작됩니다. 특히 UNIQUE 제약 조건은 인덱스 생성과 밀접하게 관련되어 있어, 데이터 무결성을 보장하며 동시에 인덱스 성능 최적화에도 기여합니다. 복습 예제: emp 테이블에 UNIQUE 제약 조건 추가 하시오더보기alter table empadd constraint emp_empno_un unique(ename); 1. 인덱스 2개의 조합으로 성능 극대화하기: INDEX MERGE SCAN🎯 튜닝 목표: 다중 인덱스를 활용하여 시너지 효과 극대화📝 이론 설명: 데이터베이스 튜닝에서 여러 개의 우수한 인덱스를 동시에 활용하는 것은 매우 강력한 성능 최적화 방법입니다. 특히 두 개의 인덱스가..
1. HAVING 절 오남용으로 시스템 마비 방지법HAVING 절은 GROUP BY로 그룹화된 결과에 대해 집계 함수 조건을 적용할 때 사용됩니다. 하지만 HAVING 절에 일반 검색 조건을 사용하면 불필요한 성능 저하를 초래할 수 있습니다.📝 개념 설명WHERE 절: 테이블에서 데이터를 가져오기 전에 행을 필터링하는 데 사용됩니다. 인덱스를 사용하여 빠른 검색이 가능합니다.HAVING 절: GROUP BY 절에 의해 그룹화된 결과에 대해 조건을 적용하는 데 사용됩니다. 집계 함수(예: SUM, AVG, COUNT)의 결과에 대한 조건을 지정할 때 유용합니다.⚡ 문제점 설명HAVING 절에 일반적인 검색 조건(그룹화와 무관한 조건)을 추가하면, 오라클은 먼저 전체 데이터를 그룹화한 후 HAVING 절의..
1. 인덱스의 구조를 이해하자인덱스는 데이터베이스 테이블의 특정 컬럼에 대한 빠른 검색을 돕기 위해 생성되는 특별한 구조입니다. 인덱스를 이해하는 것은 SQL 튜닝의 기본 중의 기본입니다. 개념 설명ROWID: 오라클 테이블에서 각 행의 물리적 위치를 나타내는 고유한 식별자입니다. 인덱스는 내부적으로 ROWID를 통해 실제 데이터 블록을 찾아갑니다.인덱스의 원리: 인덱스는 책의 찾아보기와 유사합니다. 특정 값을 찾을 때 테이블 전체를 스캔하는 대신, 정렬된 인덱스를 통해 빠르게 해당 데이터의 위치(ROWID)를 찾아갑니다.용법 및 사례실습 1: 테이블의 ROWID 확인ROWID는 테이블의 각 행의 고유한 물리적 주소를 나타냅니다. 인덱스는 이 ROWID를 사용하여 데이터를 빠르게 찾습니다.-- 사원 테이..
PL/SQL 코드 암호화하기: 패키지를 활용한 보안 및 효율성 증대1. 개념 및 용법PL/SQL 패키지는 관련된 프로시저, 함수, 변수, 상수 등을 하나의 논리적인 단위로 묶어 관리하는 데이터베이스 객체입니다. 패키지를 사용하면 코드의 재사용성을 높이고, 모듈화를 통해 유지보수를 용이하게 하며, 성능 향상에도 기여할 수 있습니다. 특히, PL/SQL 코드를 암호화하여 정보(코드)를 숨길 수 있다는 강력한 보안 이점을 제공합니다.패키지의 주요 이점:정보(코드) 숨김 (암호화): WRAP 유틸리티를 사용하여 PL/SQL 코드의 내용을 난독화하여 노출을 방지합니다.쉬운 유지보수 관리: 비슷한 업무의 프로시저나 함수들을 하나의 패키지로 묶어 관리하여 코드의 응집도를 높입니다.성능 향상: 패키지 내의 객체들은 처..
1. SQL 자동화: Dynamic SQL (동적 SQL)의 이해동적 SQL은 런타임(프로그램이 실행 중인 시점 즉 코드가 실행되고 데이터베이스와 상호작용할 때)에 SQL 문장을 동적으로 구성하고 실행하는 기법입니다. 이는 정적인 SQL 문장으로는 처리하기 어려운 복잡하고 유연한 요구사항을 해결하는 데 필수적입니다.가. 테이블 이름 또는 열 이름이 런타임에 결정되는 경우가장 일반적인 동적 SQL 활용 사례 중 하나는 쿼리할 테이블 이름이나 열 이름이 사전에 정해지지 않고, 프로그램 실행 시점에 결정되어야 할 때입니다.개념 및 용법: 정적 SQL은 코드 작성 시점에 쿼리 대상이 명확해야 하지만, 동적 SQL은 변수를 이용하여 테이블이나 컬럼 이름을 유연하게 변경할 수 있습니다. 이는 특히 여러 테이블에 대..
1. PL/SQL 튜닝 기법PL/SQL 코드의 성능은 데이터베이스 시스템 전반의 효율성에 큰 영향을 미칩니다. 여기서는 자주 사용되면서도 성능 개선에 효과적인 다양한 튜닝 기법들을 알아보겠습니다.1.1. PL/SQL 튜닝8: INSERT 문의 FOR LOOP vs FORALL 비교개념 및 용법: PL/SQL에서 대량의 데이터를 삽입할 때 FOR LOOP와 FORALL 문은 큰 성능 차이를 보입니다.FOR LOOP: SQL 문을 한 행씩 반복적으로 실행합니다. 이 과정에서 PL/SQL 엔진과 SQL 엔진 간의 Context Switching(문맥 전환)이 매번 발생하여 오버헤드가 커집니다.FORALL: 컬렉션(Collection)에 담긴 여러 행의 데이터를 한 번에 SQL 엔진으로 전송하여 일괄 처리(Bu..