분류 전체보기195 DML 튜닝 (INSERT, UPDATE, DELETE) 완벽 가이드 데이터베이스에서 DML(INSERT, UPDATE, DELETE) 구문은 단순히 데이터를 수정하는 역할로만 보일 수 있지만, 대량 작업이나 실시간 트랜잭션 환경에서는 성능 병목의 주요 원인이 될 수 있습니다. 이번 글에서는 DML 성능을 최적화하기 위한 주요 기법과 실무 적용 팁을 정리하겠습니다.DML 성능 저하 원인DML 작업이 느려지는 이유는 주로 다음과 같습니다.인덱스 오버헤드 : UPDATE나 DELETE 시, 해당 테이블에 걸린 모든 인덱스를 갱신해야 함.잠금(Lock) 경합 : 동시에 여러 세션이 같은 데이터를 수정하려고 할 때 대기 시간 증가.로그 기록 부담 : 변경 이력(REDO, UNDO 로그) 기록이 많을수록 처리 속도 저하.트리거(Trigger) 및 제약조건(Constraint) : .. 2025. 8. 13. GROUP BY, DISTINCT, ORDER BY 최적화 방법 총정리 SQL에서 GROUP BY, DISTINCT, ORDER BY는 데이터 집계나 정렬을 위해 자주 사용되는 구문입니다. 하지만 대용량 데이터에서 무심코 사용하면 성능이 급격히 저하될 수 있습니다. 오늘은 각 구문이 어떻게 동작하는지, 그리고 어떻게 최적화할 수 있는지 살펴보겠습니다.GROUP BY 최적화GROUP BY는 동일한 값을 가진 행들을 그룹화하여 집계 연산을 수행합니다. 1) 기본 동작 방식서버는 대상 컬럼을 기준으로 데이터를 정렬(SORT)한 후 그룹핑 처리집계 함수(SUM, COUNT, AVG 등)와 함께 사용SELECT category, COUNT(*) AS cntFROM productsGROUP BY category; 2) 성능 저하 원인정렬(Sort) 작업이 추가적으로 발생데이터가 많을수.. 2025. 8. 12. 서브쿼리와 뷰(View) 최적화 서브쿼리(Subquery)란?서브쿼리는 다른 SQL문의 일부로 포함되어 실행되는 쿼리입니다. 주로 WHERE, FROM, SELECT 절에서 사용됩니다. 예시:SELECT * FROM employees WHERE department_id = ( SELECT department_id FROM departments WHERE department_name = 'Sales'); 튜닝 관점: 서브쿼리의 위치와 작성 방식에 따라 실행 계획이 크게 달라집니다. 서브쿼리 유형별 성능 특성1. 단일 행 서브쿼리 반환값이 1개인 서브쿼리 (=, , 옵티마이저가 실행 순서를 단순화하기 쉽다 튜닝 포인트 PK나 Unique Index가 걸린 컬럼에서 단일 행 서브쿼리는 매우 빠름2. 다중 행 서브쿼리여.. 2025. 8. 11. SQL 튜닝 관점에서 보는 인덱스(Index) 구조와 성능 인덱스의 역할 — 왜 튜닝에서 중요한가?SQL 튜닝의 80%는 불필요한 Full Table Scan을 줄이고, 인덱스를 효과적으로 활용하는 데서 시작됩니다. 인덱스 구조와 성능 특성을 이해하면, 실행 계획을 읽고 "왜 인덱스를 안 타는지" 바로 원인을 찾을 수 있습니다.인덱스 내부 구조와 동작 방식1 B-Tree 인덱스 (Balanced Tree)대부분의 RDBMS가 사용하는 기본 인덱스 구조검색, 정렬, 범위 조회에 유리구조: 루트 노드 → 브랜치 노드 → 리프 노드리프 노드에는 실제 데이터의 주소(RowID) 저장 튜닝 포인트 인덱스 범위를 최소화하면 블록 I/O를 줄일 수 있음"선행 컬럼" 조건이 실행 계획의 인덱스 활용 여부를 결정2. 클러스터형 vs 비클러스터형 구분 클러스터형 인덱스 비클러.. 2025. 8. 11. 이전 1 2 3 4 ··· 49 다음