본문 바로가기

SQLP 자격증

SQLP - 인덱스 기본 원리 @markdown # 인덱스 기본 원리____ ## 인덱스 구조### 인덱스 기본 구조- 인덱스는 데이터를 빨리 찾도록 돕는다- 루트 : 데이터 값 범위를 나타내는 키값- 브랜치 블록 : 키 값에 해당하는 블록을 찾는 데 필요한 주소 정보- 리프 블록 : 데이터가저장되 있는 블록![](http://wiki.gurubee.net/download/attachments/26745270/pict_00000.jpg) ### 인덱스 탐색____- 수직적 탐색, 수평적 탐색![](http://wiki.gurubee.net/download/attachments/26745270/pict.jpg) ## 다양한 인덱스 스캔 방식____ ### Index Range Scan- 인덱스 루트 블록에서 리프 블록까지 수직적으로 탐.. 더보기
SQLP - 쿼리변환(2) @markdown # 쿼리변환(2) ## 조건절 이행____- A 테이블에서 사용된 필터 조건이 조인 조건절을 타고 반대편 B 테이블에 대한 필터 조건으로 이행되는 경우 SELECT *FROM DEPT D, EMP EWHERE E.JOB = 'MANAGER'AND E.DEPTNO = 10AND D.DEPTNO = E.DEPTNO; -----------------------------------------------------------------------------------------------------------| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |----------------------------------.. 더보기
SQLP - 쿼리변환(1) @markdown # 쿼리변환(1) ## 쿼리변환이란____- 실행계획을 생성하고 비용을 계산하기에 앞서 사용자 SQL을 최적화에 유리한 형태로 재작성함![](http://wiki.gurubee.net/download/attachments/26745078/SQL_286.jpg)- Query Transformer가 역할 담당 ### 휴리스틱(Heuristic) 쿼리 변환- 규칙 기반(Rule-based) 최적화 기법- 결과만 보장된다면 무조건 쿼리 변환을 수행 ### 비용기반(Cost-based) 쿼리 변환- 변환된 쿼리의 비용이 더 낮을 때만 그것을 사용하고, 그렇지 않을때는 원본 쿼리 그대로 두고 최적화를 수행 ## 서브쿼리 Unnesting- 중첩된 서브쿼리를 풀어내는 것을 말함- 메인쿼리와 같은 레.. 더보기
SQLP - 옵티마이저 @markdown # 옵티마이저 ## 옵티마이저란____- SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS 내부의 핵심엔진- 옵티마이저가 생성한 SQL 처리경로가 `실행계획` #### SQL 최적화 과정 요약- 1. 사용자가 던진 쿼리 수행을 위해 후보군이 될만한 실행계획을 찾는다.- 2. 데이터 딕셔너리에 미리 수집해 놓은 오브젝트 통계 및 시스템 통계정보를 이용해 실행계획의 예상비용을 산정한다.- 3. 각 실행계획을 비교해서 최저비용을 갖는 하나를 선택한다. ## 옵티마이저 종류____### 규칙기반 옵티마이저(Rule-Based Optimizer, Heuristic Optimizer)- 미리 정해 놓은 규칙에 따라 액세스 경로를 평가하고 실행계획을 선택- 규칙 : 엑세스.. 더보기
SQLP - 동시성 제어 @markdown # 동시성 제어- DBMS는 다수의 사용자를 가정하며, 동시에 작동하는 다중 트랜잭션의 상호간섭 작용에서 데이터베이스를 보호 할 수 있어야 함- 동시성을 제어할 수 있도록 하기 위해 모든 DBMS가 공통적으로 Lock 기능을 제공- `SET TRANSACTION` 명령어를 이용해 트랜잭션 격리성 수준을 조정할 수 있는 기능도 제공 #### 동시성과 일관성의 상관관계![](http://wiki.gurubee.net/download/attachments/26745060/SQL_280.jpg) # 비관적 동시성 제어 vs 낙관적 동시성 제어____ ## 비관적 동시성 제어(Pessimistic Concurrency Control)- 사용자들이 같은 데이터를 동시에 수정할 것이라고 가정- 데이.. 더보기
SQLP - 트랜잭션(Transaction) @markdown # 트랜잭션(Transaction)____- 트랜잭션은 업무 처리를 위한 논리적인 작업 단위 ## 트랜잭션의 특징 ### 원자성(Atomicity)- 트랜잭션은 더 이상 분해가 불가능한 업무의 최소단위이므로, 전부 처리되거나 아예 하나도 처리되지 않아야 함. ### 일관성(Consistency)- 일관된 상태의 데이터베이스에서 하나의 트랜잭션을 성공적으로 완료하고 나면 그 데이터베이스는 여전히 일관된 상태여야 함. ### 격리성(Isolation)- 실행 중인 트랜잭션의 중간 결과를 다른 트랜잭션이 접근할 수 없음 ### 영속성(Durability)- 트랜잭션이 일단 실행을 성공적으로 완료하면 그 결과는 데이터베이스에 영속적으로 저장. ## 트랜잭션의 격리성 ### 낮은 단계의 격리성 .. 더보기
SQLP - Lock @markdown # Lock____## Lock이란- 같은 자원을 액세스 하려는 다중 트랜잭션 환경에서 데이터베이스의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장할 수 있는 직렬화(Serialization) 장치 ## 공유 Lock과 배타적 Lock____### 공유 Lock- 공유 Lock은 데이터를 읽고자 할 때 사용- 다른 공유 Lock과는 호환되지만 배타적 Lock과는 호환되지 않음 ### 배타적 Lock- 배타적 Lock은 데이터를 변경하고자 할 때 사용되며, 트랜잭션이 완료될 때까지 유지- 해당 Lock이 해제될 때까지 다른 트랜잭션은 해당 Resource에 접근할 수 없음 ## 블로킹과 교착상태____ ### 블로킹- Lock 경합이 발생해 특정 세션이 작업을 진행하지 못.. 더보기
SQLP - 데이터베이스 I/O 원리 @markdown # 데이터베이스 I/O 원리____ ## 블록단위 I/O- 데이터 파일에서 DB 버퍼 캐시로 블록을 적재할 때- 데이터 파일에서 블록을 직접 읽고 쓸때- 버퍼 캐시에 변경된 블록을 다시 데이터 파일에 쓸 때 ## 메모리 I/O vs 디스크 I/O### I/O 효율과 튜닝의 중요성- 디스크 데이터 입출력은 디스크의 액세스 암(Arm)이 움직이면서 헤드를 통해 데이터를 읽고 쓰기 때문에 느림- 메모리를 통한 입출력은 전기적 신호로 데이터를 읽기 때문에 빠름- 모든 DBMS는 읽고자 하는 블록을 먼저 버퍼 캐시에서 찾고, 없을 경우에는 디스크에서 데이터를 읽어 버퍼 캐시로 적재 한 후 읽기 작업을 수행- 디스크 I/O를 최소화하고 버퍼 캐시 효율을 높이는 것이 데이터베이스 I/O 튜닝의 목표.. 더보기
SQLP - 데이터베이스 Call과 네트워크 부하 @markdown # 데이터베이스 Call과 네트워크 부하- 서버 프로세스에게 작업을 지시하거나 결과집합을 요청할 때 모든 명령은 데이터베이스 Call을 통해 전달된다. ## 데이터베이스 Call 종류____### SQL 커서에 대한 작업 요청에 따른 구분- 1) Parse Call : SQL 파싱을 요청하는 Call- 2) Execute Call : SQL 실행을 요청하는 Call- 3) Fetch Call : SELECT문의 결과 데이터 전송을 요청하는 Call ### Call 발생 위치에 따른 구분#### 1) User Call- DBMS 외부로부터 요청되는 Call- User Call이 많은 Peek 시간대에 시스템 확장성을 떨어뜨리는 가장 큰 원인- User Call을 줄이기 위한 기술요소- ①.. 더보기
SQLP - SQL 파싱 부하 @markdown # SQL 파싱 부하## SQL 처리 과정____- 사용자는 구조화된 질의언어(SQL)을 통해 사용자가 원하는 결과집합을 정의- DBMS는 사용자의 SQL을 SQL 옵티마이저를 통해 실행계획으로 작성해줌Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=209 Card=5 Bytes=175) 1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMP' (Cost=2 Card=5 Bytes=85) 2 1 NESTED LOOPS (Cost=209 Card=5 Bytes=175)3 2 TABLE ACCESS (BY INDE.. 더보기