데이터를 검색할 때는
1. 램을 거치거나,
2. 디스크에 접근하거나
해야한다.
램은 전기적 신호로 작동되기 때문에 가져오는 것도, 연산속도도 빠르지만, 하드디스크는 물리적인 도구라 램보다 가져오는 것이 느리다. 따라서 디스크 접근을 줄이는 것이 검색속도를 향상 시킬 수 있는 방법이다.
하드디스크에 접근하는 것을 디스크 접근(I/O)라고 하는데, 이는 데이터 INPUT 과 OUTPUT의 약자이다.
데이터 접근을 줄일 수 있는 방법은
1. 캐시 메모리 검색 기법
2. 시퀀셜 엑세스 기법
3. 랜덤 엑세스 기법이다 있다.
1. 캐시 메모리 검색 기법
캐시 메모리는 아주 작은 메모리(1~12M)이다. 속도가 빠른 대신 가격이 비싸다.
캐시 메모리라는 말이 포괄적인데, 검색이 하드 디스크까지 가기 전에 메모리에서 처리해주는 것을 일괄적으로 캐시 메모리라고 한다. 만일 캐시 메모리 위에 데이터가 있다면, 굳이 하드 디스크까지 갈 필요가 없는 것이다. 혹여 캐시 메모리 위에 모든 정보가 없다고 해도 하드 디스크에 요청하는 여분의 데이터의 크기가 작기 때문에 데이터가 한번에 몰리는 병목 현상을 최소화 해준다.
다만 메모리가 작기 때문에 데이터에 우선순위를 두면서 메모리를 지속적으로 정리하는데, 이 때, 우선순위는 가장 최근에 사용한 순위로 올라가게 된다.
2. 시퀀셜 엑세스(fullscreen) 기법.
시퀀셜 엑세스 기법은 읽을 수 있을 만큼 블록 전체를 다 읽어서 필요한 데이터를 찾아내는 방법이다. 데이터를 최대한 많이 가지고 오면서 I/O를 최소화하는 방법이다.
이 방법은 모든 데이터를 다 읽어내기 때문에 찾아야 할 데이터가 많을 때 유리하다.
3. 랜덤 엑세스(random assess) 기법.
랜덤 엑세스 기법은 전체를 다 읽어 느려질 수 있는 시퀀셜 엑세스 기법의 단점을 보완한 기법이다.
전체를 다 읽지 않고 인덱스를 이용해 디스크에 랜덤하게 접근한다. 이 때, 데이터가 모여있다는 보장이 없어서 단일 블록씩 끌어올린다. 즉, 인덱스를 찾는데 I/O가 발생하고, 이후 데이터의 양만큼 I/O가 또 일어나게 된다.
전체를 읽지 않으므로 데이터가 작을 때 사용한다.
4. 클러스터링 팩터 전략
랜덤 엑세스 기법의 단점을 보완하기 위한 것이다.
같은 종류의 데이터를 한 블록에 모아서 한번에 끌어올리기 때문에 I/O의 횟수를 줄인 방법이다. 따라서 전체 데이터를 읽는 것도 아니다.
제일 빠른 방법은 캐시 메모리이고,
시퀀셜 엑세스와 랜덤 엑세스 기법은 상황에 따라 다르게 적용된다.
15% 이내의 데이터를 검색할때는 랜덤 엑세스를, 이상의 데이터를 검색한다면 시퀀셜 엑세스 검색을 이용한다.
'데이터베이스' 카테고리의 다른 글
DB와 JAVA 연동하기 (0) | 2020.04.22 |
---|---|
12. 스칼라 서브쿼리 (0) | 2020.04.08 |
11. SUB QUERY (0) | 2020.04.02 |
10. DML (0) | 2020.04.02 |
9. view (0) | 2020.04.02 |