inflearn logo
강의

Course

Instructor

[MMORPG Game Development Series with C# and Unity] Part 5: Database

Composite index

인덱스의 저장 방식에 대해서 질문이 있습니다!

538

dlrudghks6517970

4 asked

1

안녕하세요 루키스님.
항상 좋은 강의 감사드립니다!!!

인덱스 및 복합 인덱스 강의를 들으면서
생긴 궁금증 하나를 여쭤보려 합니다!

※ 해당 질문은 Clustered Index 기준입니다.

개요.
인덱스 강의 때 Clustered Index는 물리적인 데이터의 저장 순서의 기준이라고 하셨습니다. 따라서 사전처럼 데이터가 키에 따라 정렬된 상태로 저장되는 것으로 이해했습니다.
그런데 복합 인덱스 강의를 들으면서 인덱스가
트리 구조의 페이지로 나뉘고 써칭을 할 때 페이지 트리 탐색 후 찾은 인덱스(키)의 RID를 읽어서 본격 실제 물리적인 데이터를 찾는다고 말씀하셨습니다.

의문.
"데이터가 애초에 정렬된 상태로 저장되면 트리 탐색 혹은 이분 탐색으로 끝날 텐데 왜 굳이 RID를 읽고 한 번 더 써칭을 하는 것일까?"

 

그래서 제가 아래와 유추와 결과를 냈는데
혹시 맞을까요? (Clustered Index 기준)


유추.
"데이터가 물리적으로 정렬된 것은 맞을 것 같은데..
그렇다면 내가 생각한 데이터의 기준이 다를까?
인덱스는 일종의 Key이므로
데이터는 Key와 Value의 조합이겠군?
그렇다면 강의에 말씀하신 데이터는 엄밀히 말하면 Key 데이터와 Value 데이터로 나눌 수 있겠군?"

결론.
인덱스(Key)는 실제 디스크에 정렬된 상태로 저장되지만 그 인덱스(Key)에 대응되는 실제 데이터(Value)는 실제 디스크에 정렬된 상태로 저장되지 않고 대신에 리니어 하게 만 저장된다. 그렇기 때문에 정렬되지 않은 실제 Value를 찾기 위해서 RID를 읽는 것.
(Value 마저 정렬된다면.. 그것 나름대로 또 끔찍하겠군요... 중간에 추가 삽입될 때마다 방대한 데이터가 한 칸씩 뒤로 밀리기 때문에요.)

그래서 인덱스(Key)는 트리 탐색을 하고
인덱스(Key)에 대응되는 Value를 찾기 위해서 RID를 읽고 찾아갑니다.


+

그 다음 강의인 Clusterd vs Non-Clustered를
시청 후 해결됐습니다.

위에서 제가 언급한 결론은
Non-Clustered Index의 경우네요.

그러면 Clustered Index의 경우 Key가 정렬되어 저장된 곳에 바로 Value가 저장되는군요. 그래서 실제 데이터 자체가 디스크에 정렬된 상태로 저장된다고 볼 수 있겠네요.
Non-Clustered에 비해서 검색 속도는 빠르겠지만 대신에 Trade Off로 데이터의 추가 삽입/삭제가 느리겠군요. 왜냐하면 Value 까지 포함한 큰 데이터들이 전부 정렬된 상태를 항상 보장 받아야 하기 때문에요.

 

 

 

sql DBMS/RDBMS

Answer 1

1

Rookiss

아주 완벽히 잘 요약을 해주셨네요 -_-b

최신 하드웨어에서 SQL Express 설치에러 해결법

0

59

1

인벤토리 테이플 데이터가 엄청 많아지면

0

97

2

DISTINCT의 행 개수와 COUNT(DISTICNT )의 결과가 왜 차이나는지 궁금합니다.

0

101

1

conect시 신뢰할 수 없는 기관에서 인증서 발급 오류 뜨시는분들

0

319

1

PRIMARY KEY와 CLUSTERED INDEX의 차이

0

330

1

락과 트랜잭션 격리수준 차이는 뭔가여?

0

534

1

외래 키 질문이 있습니다.

0

385

1

게임 프로젝트와 연동하는 강의 내용은 포함되어 있지 않는 건가요?

0

565

1

윈도우 함수는 SELECT에서만 사용가능한가요?

0

452

1

데이터 베이스가 만들어지지 않을 때

9

799

3

sql 강의 관련 질문

0

679

1

강의내용 외의 질문이 있습니다

0

582

1

sinter

0

360

1

테이블 여러개랑 조인

0

372

1

서버 컴퓨터 스펙에 따라서 성능 차이가 심한가요?

0

798

1

Non-Clustered 에서 clustered index 추가시

0

438

1

UNIQUE INDEX와 PRIMARY KEY의 기능적차이

0

583

1

Part5: 데이터베이스_ SSMS 입문 테이블작성 오류에관하여

2

903

2

MSSQL vs AWS

0

364

1

join 관련 질문입니다.

0

287

2

Inner Join 질문

0

305

1

데이터베이스 원리는 CAP이론을 비유하여 설명하신 건지 궁금합니다.

1

401

0

CLUSTERED INDEX

1

303

1

집계함수 설명 중 집합의 의미가...

0

286

1