<DATA DICTIONARY>

 

 

SQL (SELECT ENAME FROM EMP;) -> DBMS(오라클)

* SQL이 BYTE STREAM해서 오라클에 정보를 넘긴다.

 

SQL 은 

 

1. 파싱 (컴파일한다.)

 

2. DICTIONARY(딕셔너리) 

(한번 수행한 쿼리문을 두번 검색할때는 파싱작업을 생략 -> 이미 분석되어 있는 것이 있기 때문에)

 

 

 

 


 

 

 

<데이터 검색 기법 이해>

 

 

- 디스크 접근(I/O)를 줄이는 것을 잘 해야한다.

 

 

- 디스크 접근을 줄이기 위해서는 INDEX를 알아야 한다.

 

 

- 디스크 접근을 줄이는 방법 

 

1. 캐시 메모리 검색 기법 (이게 제일 좋은 방법이다.)

(EX. 내 책상 위의 책꽂이를 늘리는 것 / 메모리를 확장시키는 것 혹은 최적의 데이터를 RAM에 배치)

 

* 캐시메모리(CPU에 있음)란 1M, 2M 정도의 소량의 메모리이다. 속도가 엄청나게 빠르기 때문에 가격이 비싸고, 서로 다른 장치의 병목현상을 최소화 해주는 범용 메모리이다.

 

 

 

2. 시퀀셜 엑세스 기법 : 순서대로 블록 전체를 다 읽어서 필요한 데이터를 찾아낸다.

멀티 블록 I/O를 한다.

(처음부터 끝까지 풀스캔하는 것)

 

* 모든 데이터를 다 읽어야 하기 때문에 찾아야 할 데이터가 많을 때 유리하다.

 

 

 

3. 랜덤 엑세스 기법 (INDEX하는 것) : 필요한 블록만 하나씩 가져 온다.

전체를 다 읽는 시퀀셜 엑세스의 단점을 보완하기 위해 나온 기법이다.

인덱스를 이용하여 랜덤하게 디스크에 접근한다.

(메모리에 접근해서 당겨오는 것)

데이터가 모여 있다는 보장이 없기 때문에 단일 블록I/O를 한다.

 

데이터가 작을 때 유리하다. (EX. PK를 찾을 때 유용하다 / PK를 만들면 INDEX가 만들어진다.)

 

 

 

4. 클러스터링 팩터 전략 :

 

랜덤 엑세스 기법의 단점을 보완하기 위해 나온 전략이다.

읽어야 할 데이터를 같은 블록에 모아서 저장하면 엑세스 하는 블록의 양이 감소한다.

INDEX SCAN의 COST에 큰 영향을 준다.

블록당 데이터가 1건이 있는건 아니고, 블럭당 데이터는 여러개 있다.

저장할때 군집화 시키는 것 

 

 

 

* 캐시메모리 > 시퀀셜 엑세스 = 랜덤 엑세스

 

첫째, 디스크 I/O가 일어나지 않는 캐시메모리 검색이 제일 유리 

 

둘째, 시퀀셜 엑세스와 랜덤 엑세스 중 무엇이 더 효과적인지는 상황에 따라 다르다.

통상 15% 이내의 데이터를 검색할 때 주로 랜덤 엑세스 검색을 사용한다.

 

셋째 데이터가 많다면 시퀀셜 엑세스 기법이 유리하다.

 

 

 

 

 

openclose