[오늘의 배움] 018 데이터베이스 저장과 접근

이상민·2020년 12월 13일
0

[오늘의 배움]

목록 보기
18/70
post-thumbnail

1. DB 저장

  • 데이터베이스 저장 장치 : 직접 접근 저장 장치 (Disk, SSD)
    비휘발성, 온라인 장치 (위치를 특정해서 저장)

  • 임의 접근 시간 = seek time + rotational delay + block transfer time
    약 10~30ms로 메인 메모리 접근 시간에 비해 매우 느림
    대량 전송률 : 연속적 블록 전송 시간

  • DB의 성능 향상 초점은 I/O 최소화. 배치, 저장 방법 중요


2. DB 접근

2-1. 접근 과정

2-2. 파일과 페이지 세트

  • 파일 : 테이블 저장, 페이지 세트로 구성

  • 호출 관계 : DBMS --(file id)--> 파일 관리자 --(page id)--> 디스크 관리자
    --(sector id)--> 디스크

2-3. 파일 예시

논리적 순서와 저장 순서가 같음. 저장 파일은 28개 페이지로 구성된 페이지 세트에 저장.
각 레코드가 하나의 페이지를 차지한다 가정

  • 초기 저장 후 디스크 배치도

  • I:S6, D:S2, I:C6, D:S4 후 배치도 (I=Insert, D=Delete)

  • 페이지 헤드에 페이지 포인터 포함할 경우

2-4. 페이지 구성

  • 저장 레코드 관리 기능 : DBMS가 페이지 I/O에 대해 알 필요 없이 저장 파일/레코드로 처리할 수 있게 지원

  • 데이터가 페이지보다 클 경우 LOB 사용

2-5. 레코드 연산 예시

1) 페이지 p에 레코드 5개 저장

2) DBMS : 학생 레코드 S9 삽입 요청 (각 레코드의 위치는 offset으로 표현)

3) DBMS : 레코드 S2 삭제 요청 (버퍼/메인메모리에서 연산돼서 당기는데 비용이 적음)

4) DBMS : 레코드 S7 삽입 요청 (학번 순 정렬 시)

2-6. 슬롯 페이지 (slotted page)

  • rId = <pageId, slotId>, int나 long 같이 하나의 숫자 자료로 두 정보 표현함
    예) 4KB page의 rId = int = 32bit = 20bit <pageId> 12bit <slotId>

  • 고정/가변 길이 레코드. 실제 DB에선 다음 페이지 번호 직접 명시하지 않고 메타 데이터 이용


i. 오프셋은 2 Byte(short)로 표현
ii. 레코드의 길이 = 다음 레코드 시작 오프셋 - 레코드 오프셋
iii. 실제 DB에서 모든 페이지는 slotted page로 표현

profile
편하게 읽기 좋은 단위의 포스트를 추구하는 개발자입니다

0개의 댓글