-
Notifications
You must be signed in to change notification settings - Fork 0
3조 물리적 데이터베이스 미션
Semin Choi edited this page Aug 14, 2024
·
1 revision
-
B-tree 의 등장 배경
- 이진 검색 트리의 노드 수가 많으면 노드들을 모두 메인 메모리에 올려서 사용할 수 없다.
- 하나의 노드의 크기를 페이지 크기 단위와 일치시켜서 디스크 I/O를 최소화 하기 위함.
-
B-tree 의 동작 방식
- 검색: 기본적으로 이진트리와 같은 방식으로 동작합니다. B 트리는 노드가 여러개 있기 때문에 key가 들어갈 수 있는 위치를 찾으며 검색합니다.
- 삽입:
- 삽입할 리프노드 N에 key를 저장합니다.
- 노드 N에 여유가 없으면 노드의 중간 키를 부모 노드에 삽입하고, 나머지 키들을 두 개의 새로운 리프노드로 나눕니다.
-
B-tree와 B+ tree의 차이점
- B-Tree는 루트 노드, 브랜치 노드, 리프 노드로 구성된다.
- 브랜치 노드와 리프 노드에 모두 데이터가 저장된다.
- B+ Tree는 리프 노드에만 데이터가 저장된다.
- 브랜치 노드에는 키만 저장된다.
- 리프 노드는 링크드 리스트 형태로 연결되어 있어 풀 스캔에 유리하다.
-
Clustered Index의 동작방식
- 클러스터드 인덱스는 유사한 값을 가진 컬럼을 기준으로 정렬되어 모여있는 인덱스를 말한다.
- 클러스터드 인덱스의 리프 노드는 실제 데이터 레코드를 함께 가지고 있다.
-
테이블을 저장하는 다른 방식도 있을까?
- 논클러스트 인덱스, 해시 테이블,
- 물리적으로 테이블을 저장하는 다양한 방법
-
InnoDB 란 무엇인가?
- MySQL은 두뇌 부분에 해당하는 쿼리 파서, 전처리기, 옵티마이저, 실행 엔진과 실제 작업을 처리하는 핸들러(스토리지 엔진)으로 구성되어 있다.
- InnoDB는 이 중 스토리지 엔진에 해당한다.
- InnoDB는 실행 엔진의 요청에 따라 데이터를 디스크에 저장하고 읽어오는 역할을 담당한다.
-
InnoDB 에서 create database -> create table 을 할 때 일어나는 일을 설명해 보세요.
-
/var/lib/mysql
하위에 데이터베이스 이름의 디렉토리가 생성된다. (cafe
가 jsp-cafe 미션 중 생성한 데이터베이스)
- 데이터베이스 디렉토리 하위에는 각 테이블이
ibd
확장자를 가진 테이블스페이스 파일이 생성된다.
-
ibd
파일은 테이블의 데이터와 인덱스를 저장한다.
-
-
InnoDB 외에 어떤 스토리지 엔진들을 사용할 수 있는가? 특징은?
- MyISAM
- 트랜잭션을 지원하지 않는다.
- Memory
- 트랜잭션을 지원하지 않는다.
- 메모리에 데이터를 저장되어 캐시로 사용할 수 있다.
- MyISAM
-
MySQL 에서 지원하는 인덱스의 종류와 용도에 대해 설명해 보세요.
- B+ Tree
- R-Tree
-
MySQL 로 지도정보를 저장하고 싶습니다. 어떻게 해야 할까요?
- R-Tree는 2차원의 데이터를 인덱싱하고 검색하는 목적의 인덱스
- 기하학적 도형(Geometry) 정보를 관리할 수 있는 데이터 타입을 제공
- R-Tree는 도형을 감싸는 최소 크기의 사각형(MBR, Minimum Bounding Rectangle)들의 포함 관계를 B-Tree 형태로 구현한 인덱스
Oracle, MS-SQL, PostgreSQL 에서 테이블과 레코드를 저장하는 방식은 어떤 것들이 있는가?그룹으로 위 주제에 대해 학습하고 학습정리결과를 댓글로 달아 주세요.