데이터베이스 랜덤액세스 (Random Access)

I. DB성능 확보를 위한 랜덤액세스의 개념

데이터베이스 성능을
확보하기 위해
rowid 기반 인덱스
참조 후 한 번에
하나의 블록 액세스
하는 방식

 

II. 랜덤액세스의 유형

유형항목설명
확인
랜덤
액세스
개념WHERE 조건의 컬럼이 인덱스에 존재하지 않아 테이블을 액세스하는 랜덤액세스
특징– 랜덤액세스의 횟수보다 최종 결과가 동일하거나 적게 추출
고려
사항
– 인덱스 액세스 후 버려지는 데이터 발생
– 확인랜덤액세스 제거가 성능을 좌우
추출
랜덤
액세스
개념– 인덱스 액세스 후 SELECT 절의 컬럼을 결과로 추출 위해 추가로 테이블에 액세스
특징– 랜덤액세스 횟수와 추출 데이터양 동일
– SELECT 절에서 발생
고려
사항
– 자주 사용 SQL, 인라인 뷰를 통한 RowID 이용, 컬럼이 많은 결합 인덱스
정렬
랜덤
액세스
개념ORDER BY, GROUP BY절 컬럼이 인덱스에 존재하지 않아 추기 테이블 액세스
특징– 랜덤액세스와 추출 데이터 양 동일
– ORDER BY, GROUP BY절에서 발생
고려
사항
– ORDER/GROUP BY절 컬럼 인덱스 추가
– 불필요한 ORDER/GROUP BY절 제거
  • 랜덤액세스 중 추출되는 데이터를 감소시키는 확인랜덤액세스를 감소시키는 방안이 성능 측면에서 가장 중요

 

III. 랜덤액세스 최소화 사례

유형사례개선 사항
확인랜덤
액세스
SELECT 사번 FROM 사원
WHERE 부서=2 AND 나이=25;
– “나이” 컬럼 추가
→ 1회씩 액세스
추출랜덤
액세스
SELECT 이름 FROM 사원
WHERE 성별=”남”;
– “이름” 컬럼 추가
→ “이름” 자주 사용
정렬랜덤
액세스
SELECT 사번 FROM 사원
ORDER BY 나이 ASC;
– “나이” 컬럼 추가
→ 성능 개선
  • 랜덤액세스 최소화 위한 인덱스 추가는 상황에 맞게 고려하여 적용 필요

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^