오늘 수업 키워드: clustered index, B+tree, primary index와 secondary index
Inno DB
row store
page안에 레코드들을 저장한다.
이미지 출처 (프레디가 공유해주셨다)
column store
필드 검색에 유리하다. ex) select a from T;
필드들을 따로따로 나눠서 각 필드별로 저장한다.
Big data가 컬럼 기반을 주로 이용한다.
분석 쿼리에 유리 ex) 아마존의 Red shift 서비스, 분석쿼리 하는 서비스, row 기반보다 열배 빠르지만 열배 비싸다.
PK를 만들면 인덱스를 만든다. 이 인덱스는 물리적으로 B+tree 구조로 저장된다.
B-tree와 B+tree의 차이
B+tree는 리프노드에만 데이터를 가지고 있다. → 리프노드에 모든 숫자들이 있다. 리프 노드끼리 data pointer가 연결되어 있으니깐
B-tree는 모든 노드가 데이터를 가지고 있다.
리프노드: 자식노드가 없는 노드
B-tree와 B+tree는 디스크에 저장이 된다. DB에서 디스크의 저장 단위는 페이지이다.
create table T ( a int PK, b char(50) ); 을 입력하면 생기는 일은?
→ PK a에 대한 B+tree가 생성된다.
B+tree에 PK a를 기준으로 index page가 만들어지고, data page에는 PK a를 기준으로 page에 정렬되어 있다.
→ 이것이 clustered index 자료구조이다.
→ 관계형 데이터베이스는 해당 구조로 되어있다.
앗 돌아온 노트필기 정리 잘해주셨네요 감사합니다! ㅋㅋ 퍼다가 써도 되나요?