random 액세스에 관해 0 2 1,689

by 기그스 [2015.02.01 15:46:15]


안녕하세요.

NL 조인을 공부하고있는 중 도저히 이해가 안되는 부분이있어서 여쭤봅니다.

인덱스 키값으로 읽은 해당 ROWID를 가지고 테이블 조회를 하게되는데요.

이때 RANDOM 액세스로 데이터를 찾는걸로 알고있습니다.

1. 말그대로 무작위로 찾는다는거같은데... 왜 무작위로 찾을수밖에 없는건지 궁금합니다.

 - 제가 생각한것은 데이터베이스에 적재된 데이터가 무작위로 있다보니 ROWID로 찾을시 특정한 순서가 없어서

   ROWID만을 바라보고 찾아서 그런가? 라고 생각하고있습니다.

2. INDEX 키값이 우선이고 값이 동일하면 ROWID 순으로 정렬된다고 알고있습니다.

   논리적으로 그렇게 정렬이 되있다는 말인건가요? 데이터가 적재되는 순서와는 무관하게?

이부분들이 이해가 가질않으니 다음으로 넘어가기가 쉽지가 않네요.

감사합니다.

 

 

by 마농 [2015.02.02 09:10:04]

1. 데이터 엑세스 형태가 크게 두가지입니다.
  - 데이터를 순서대로 읽는 것 : Full Scan / Sequencial Access
  - 필요한 데이터만 콕 집어 읽는 것 : Index Scan / Random Access
 순서대로 읽지 않기 때문에 순차의 반대 개념으로 랜덤이라고 하는 것입니다.
 랜덤이라고 해서 무작위로 읽는건 아니죠. 주소값을 이용해 찾아 가는 거죠.
 그림으로 그렸을 때 인덱스를 통해 테이블에 접근할 때 나오는 화살표가
 말 그대로 무작위 입니다. 테이블의 아무데나 막 찌르죠.
2. 인덱스 구조와 테이블 구조는 다릅니다.
  - 테이블 : 적당한 빈공간에 순서 없이 저장되는 구조
  - 인덱스 : 키값으로 정렬되어 저장되어 있는 구조, B트리구조
 테이블에서 특정 데이터에 빠르게 접근하기 위해 필요한 구조가 인덱스입니다.
 인덱스 내에서도 찾고자 하는 자료가 저장된 위치를 빠르게 찾기 위해 B-Tree 구조를 이용합니다.


by 기그스 [2015.02.02 09:24:31]

답변 감사합니다.

마농님 덕분에 많은 공부가 되고있습니다.

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입