<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% 이내의 데이터를 검색할 때 주로 랜덤 엑세스 검색을 사용한다.
셋째 데이터가 많다면 시퀀셜 엑세스 기법이 유리하다.
'응용SW기초 기술활용 > 데이터베이스 기초 활용' 카테고리의 다른 글
오라클 - 서브쿼리 (0) | 2020.04.02 |
---|---|
오라클 - DML (0) | 2020.04.02 |
오라클 - ORA - 01031 : 권한이 불충분합니다 해결법 (0) | 2020.04.02 |
오라클 - JOIN (0) | 2020.04.01 |
오라클 - 정렬순서, LAG 함수 (0) | 2020.04.01 |