본문 바로가기
반응형

전체 글75

(SQLP SQLD 핵심 정리 8) 옵티마이저의 원리 규칙 기반 옵티마이저(Rule-Based Optimizer, RBO) - 다른 말로 '휴리스틱(Heuristic) 옵티마이저'라고도 불림 - 미리 정해 놓은 규칙에 따라 액세스 경로를 평가하고 실행계획을 선택한다. - 규칙은 액세스 경로별 우선순위로써, 인덱스 구조, 연산자, 조건절 형태가 순위를 결정짓는 주요 요인이다. 선택도(Selectivity) - 1 / NDV(Number of Distinct Value) 카디널리티(Cardinality) - 총 로우수 * 선택도 - num_rows / num_distinct 힌트를 사용하지 않고 뷰 머징(View Merging) 방지하는 방법 - 집합(set) 연산자(union, union all, intersect, minus) 사용 - connect by .. 2023. 12. 25.
(SQLP SQLD 핵심 정리 7) LOCK과 트랜잭션 동시성 제어 LOCK에 의한 성능 저하를 최소화하는 방안 - 트랜잭션의 원자성을 훼손하지 않는 선에서 트랜잭션을 가능한 한 짧게 정의할 것 - 같은 데이터를 갱신하는 트랜잭션이 동시에 수행되지 않도록 설계할 것 - 주간에 대용량 갱신 작업이 불가피하다면, 블로킹 현상에 의해 사용자가 무한정 기다리지 않도록 적절한 프로그래밍 기법을 도입할 것 - 트랜잭션 격리성 수준을 불필요하게 상향 조정하지 않을 것 - 트랜잭션을 잘 설계하고 대기 현상을 피하는 프로그래밍 기법을 적용하기에 앞서, SQL 문장이 가장 빠른 시간 내에 처리를 완료할 것 블로킹(Blocking)? - 블로킹(Blocking)은 Lock 경합이 발생해 특정 세션이 작업을 진행하지 못하고 멈춰 선 상태를 말한다. - 공유 Lock끼리는 호환되기 때문에 블로.. 2023. 12. 24.
(SQLP SQLD 핵심 정리 6) 아키텍처 기반 튜닝 원리 클라이언트가 서버 프로세스와 연결하는 Oracle의 예 - 전용 서버(Dedicated Server) 방식 - 공유 서버(Shared Server) 방식 리두로그(REDO LOG) or 트랜잭션로그(TRANSACTION LOG) - DB 버퍼 캐시에 가해지는 모든 변경 사항을 기록하는 파일을 말함. - Oracle에서는 리두로그, SQL Server에서는 트랜잭션로그 Response Time Analysis 방법론 - Response Time을 정의하고, CPU Time과 Wait Time을 각각 break down 하면서 서버의 일량과 대기 시간을 분석해 나간다. - CPU Time은 파싱 작업에 소비한 시간인지 아니면 쿼리 본연의 오퍼레이션 수행을 위해 소비한 시간인지를 분석한다. - Wait Tim.. 2023. 12. 24.
(SQLP SQLD 핵심 정리 5) SQL 최적화 기본 원리 SORT MERGE JOIN - 조인 칼럼을 기준으로 데이터를 정렬하여 조인을 수행한다. - NL JOIN은 주로 랜덤 액세스 방식으로 데이터를 읽는 반면, SORT MERGE JOIN 은 주로 스캔방식으로 데이터를 읽는다. - SORT MERGE JOIN 은 랜덤 액세스로 NL JOIN 에서 부담이 되던 넒은 범위의 데이터를 처리할 때 이용되던 조인 기법이다. - 그러나 SORT MERGE JOIN은 정렬할 데이터가 많아 메모리에서 모든 정렬 작업을 수행하기 어려운 경우에는 임시 영역(디스크)을 사용하기 때문에 성능이 떨어질 수 있다. HASH JOIN - 조인 칼럼의 인덱스를 사용하지 않기 때문에 조인 칼럼의 인덱스가 존재하지 않을 경우에도 사용할 수 있는 조인 기법이다. - HASH JOIN 은 해.. 2023. 12. 24.
반응형