본문 바로가기

분류 전체보기202

데이터베이스 구조 튜닝과 설계 고려사항 데이터베이스 성능 최적화는 단순 쿼리 튜닝을 넘어 DB 구조 설계와 튜닝이 핵심입니다.이번 글에서는 데이터 모델링, 테이블 설계, 인덱스, 파티셔닝, 정규화/반정규화 등 실무 고려사항을 정리합니다.1. 테이블 설계 고려사항컬럼 타입 최적화: 필요 최소 크기, 적합한 자료형 사용 NULL 처리: 불필요한 NULL 허용 최소화 → 저장공간/검색 효율 향상 기본 키/식별자 설계: 단일 컬럼 또는 복합 키 고려 외래키(FK) 관계: 무분별한 FK는 INSERT/UPDATE 성능 저하, 데이터 무결성 균형 필요 2. 인덱스 설계단일 컬럼 인덱스: 자주 조회되는 컬럼 우선 복합 인덱스: WHERE, JOIN 조건 컬럼 순서 중요 인덱스 남발 금지: INSERT/UPDATE/DELETE 성능 저하 유니크.. 2025. 8. 17.
성능 모니터링 도구 활용 (DBMS별) 데이터베이스 성능 문제를 조기에 발견하고 최적화하기 위해서는 DBMS별 모니터링 도구 활용이 필수입니다.이번 글에서는 Oracle, PostgreSQL, MySQL, SQL Server 각각의 모니터링 방법과 활용 전략을 정리합니다.1. Oraclev$session: 현재 세션 상태, 대기 이벤트 확인 v$sqlarea: 캐시된 SQL, 실행 횟수, 파싱 정보 확인 AWR (Automatic Workload Repository): 성능 통계, 보고서 생성 ASH (Active Session History): 실시간 세션 분석 모니터링 팁: CPU/IO 과다 사용 세션, 병목 쿼리 확인 → 인덱스, 통계, 바인딩 변수 활용예시 SQL:SELECT sql_id, executions, parse_cal.. 2025. 8. 16.
실전 튜닝 사례 분석 실제 SQL 성능 문제를 발견하고 분석, 튜닝한 사례를 통해 실전 감각을 익힙니다. 문제 원인 파악 → 실행 계획 확인 → 인덱스/쿼리 개선 → 성능 검증 순으로 접근합니다.1. 사례 개요환경: Oracle 19c, 10만 건 이상 주문 데이터문제: 특정 고객 주문 조회 쿼리 응답 속도 10초 이상원인: 하드 파싱 과다, 비효율적 인덱스, 불필요 조인 2. 문제 SQLSELECT o.order_id, o.order_dt, c.customer_name, p.product_name FROM orders o JOIN customers c ON o.customer_id = c.customer_id JOIN products p ON o.product_id = p.product_id WHERE o.customer.. 2025. 8. 16.
커서 공유(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.