본문 바로가기

전체 글199

커서 공유(Cursor Sharing) & 바인딩 변수(Bind Variables) 완벽 가이드 바인딩 변수를 사용하면 하드 파싱을 줄이고 실행 계획 안정성, CPU 효율, 보안을 동시에 높일 수 있습니다.핵심 개념커서(Cursor): DB에서 SQL 실행을 위해 유지하는 객체하드 파싱(Hard Parse): 새로운 실행 계획 생성 → 비용 높음소프트 파싱(Soft Parse): 기존 커서 재사용 → 비용 낮음커서 공유(Cursor Sharing): 동일 SQL이면 커서 재사용바인딩 변수(Bind Variable): 값 자리 플레이스홀더로 SQL 동일성 보장바인딩 변수 효과커서 캐시 히트율↑ → 소프트 파싱 증가라이브러리 캐시 경합↓ → 동시성 향상실행 계획 안정화보안 강화 → SQL 인젝션 예방네트워크/메모리 효율DBMS별 적용 예시OracleSELECT * FROM orders WHERE cus.. 2025. 8. 15.
통계 정보와 수집 전략 (Statistics & Collection Strategy) 1. 통계 정보란?데이터베이스에서 통계 정보(Statistics)는 옵티마이저가 SQL 실행 계획을 세울 때 사용하는데이터의 특성 정보를 말합니다.예를 들어 테이블의 총 행 수, 컬럼 값의 분포, 인덱스의 구조 등이 이에 해당합니다.통계 정보는 SQL 성능 최적화의 핵심 재료입니다.2. 통계 정보가 중요한 이유옵티마이저는 통계 정보를 바탕으로 최적의 실행 계획 수립통계 정보가 부정확하면 잘못된 실행 계획 → 성능 저하최신 통계 정보는 인덱스 사용 여부, 조인 방식 결정 등에 직접 영향3. 통계 정보의 주요 항목항목설명예시Table Rows테이블 총 행 수1,200,000Blocks테이블이 차지하는 블록 수15,000Distinct Keys컬럼의 고유 값 개수50Density컬럼 값의 중복 정도0.02Hi.. 2025. 8. 15.
SQL 힌트(Hint) 완벽 사용법 1. SQL 힌트란?SQL 힌트(Hint)는 데이터베이스 옵티마이저(Optimizer)가 실행 계획을 세울 때 개발자가 의도하는 방식으로쿼리를 유도하기 위해 작성하는 지시문입니다.힌트를 사용하면 쿼리 실행 순서, 조인 방식, 병렬 처리 여부 등을 직접 제어할 수 있습니다.주의힌트는 반드시 필요한 경우에만 사용해야 합니다.잘못 사용하면 성능이 오히려 저하될 수 있습니다.2. 힌트의 기본 문법SELECT /*+ HINT_NAME */ 컬럼명FROM 테이블명WHERE 조건;/*+ ... */ 형태의 주석 안에 힌트를 작성힌트와 다른 주석 구문이 혼동되지 않도록 주의3. 자주 쓰는 SQL 힌트 종류(1) 실행 계획 관련 힌트힌트설명예시FULL테이블 전체 스캔/*+ FULL(EMP) */INDEX특정 인덱스를 사.. 2025. 8. 14.
파티셔닝과 병렬 처리 (Partitioning & Parallel Processing) 1. 파티셔닝(Partitioning) 개념파티셔닝은 대용량 테이블이나 인덱스를 논리적으로 분할하여 관리하는 방법입니다.하나의 테이블이 너무 크면 데이터 검색 속도가 느려지고 관리가 복잡해집니다.이를 작은 단위로 나누어 성능과 관리 효율성을 높이는 것이 파티셔닝의 목적입니다.장점특정 파티션만 읽어 I/O 감소 → 쿼리 성능 향상백업, 복구, 삭제 작업을 파티션 단위로 가능데이터 관리 유연성 향상2. 파티셔닝 종류파티셔닝 방식특징예시범위 파티셔닝 (Range)컬럼 값 범위에 따라 분할2023년 데이터, 2024년 데이터리스트 파티셔닝 (List)특정 값 목록 기준으로 분할서울, 부산, 대구해시 파티셔닝 (Hash)해시 함수로 균등 분할ID % 4복합 파티셔닝 (Composite)두 가지 이상의 파티셔닝 조.. 2025. 8. 14.