Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 컴퓨터네트워크
- 데이터 웨어하우스
- PYTHON
- 데이터베이스
- 컴퓨터 네트워크
- dockerfile
- 정리
- 데이터 파이프라인
- AWS
- Go
- Django
- sql
- HADOOP
- S3
- 자료구조
- http
- 파이썬
- 종류
- 데이터엔지니어링
- 데브코스
- 운영체제
- 데이터 엔지니어링
- redshift
- TIL
- TCP
- linux
- airflow
- 가상환경
- airflow.cfg
- Docker
Archives
- Today
- Total
홍카나의 공부방
[데이터베이스] 하드 디스크의 구조 본문
데이터베이스의 저장
- 데이터베이스는 일반적으로 하드 디스크, SSD에 저장된다.
- 만약 하드 디스크에 저장된다고 한다면, 하드 디스크가 데이터를 저장하고 접근하는 방식을 알아야 DB를 사용할 때 어떻게 데이터를 빠르게 read & write할지 결정할 수 있다. ( 디스크는 느려서, 저장 방식을 알아야 한다. )
- 그래서 하드 디스크의 데이터 저장 방식을 먼저 알아본다.
Hard Disk의 구조
- 하드 디스크는 수많은 플랫터로 구성되어 있다. 그리고 플랫터의 중심축 부분을 스핀들이라고 한다.
- 한 플랫터는 양면으로 있고, 플랫터에는 수많은 트랙들이 있다.
- 트랙을 또 나눌 수 있는데, 위 그림처럼 트랙을 나눈 부분을 섹터라고 부른다. 보통 섹터는 512바이트로 나눈다.
- 같은 위치의 트랙을 실린더라고 한다. 보통 데이터를 읽을 때 플랫터 마다 존재하는 여러 디스크 헤드가 같은 위치의 트랙을 동시에 읽는다.
- 하드 디스크는 스핀들이 도는 방식이다. 그래서 디스크 헤드와 디스크 암이 위치를 바꾸면서 데이터를 읽는다.
- 디스크 접근 시간은 디스크 헤드가 원하는 위치를 찾는 시간을 의미한다.
- 디스크 헤드가 특정 트랙까지 움직이는 시간을 탐구 시간(Seek time)이라고 한다.
- 이후, 데이터를 읽어야 하는 섹터까지 스핀들이 회전하는 시간을 회전 지연 시간(Rotational delay)이라고 한다.
- 그리고 해당 섹터에서 데이터를 전송하는 시간을 데이터 전송 시간(Transfer Time)이라고 한다.
- 디스크 접근 시간은 위 3단위의 시간을 합친 시간이다.
- 저 3시간 중에서 SEEK TIME이 가장 오래 걸린다. 즉, 디스크 헤드가 트랙 사이를 왔다 갔다 하는 시간이 가장 오래 걸린다.
- 그래서 데이터를 저장할 때 같은 실린더에 두면, 읽는 시간을 엄청나게 줄일 수 있다. 디스크 헤드가 움직일 소요가 감소하면서 Seek time도 감소하기 때문이다. 물론 디스크 암/헤드가 움직이지 않으면 Best.
- 그리고 한꺼번에 읽어야 한다. 1바이트를 write 할 때 마다 디스크 접근해버리면 성능이 떨어져서 못쓴다. 이게 메모리에 dirty data가 있는 이유다.
- 동일 실린더, 횟수는 최소화!
반응형
'Data Engineering > Database' 카테고리의 다른 글
[데이터베이스] 삭제 : DELETE vs DROP vs TRUNCATE (0) | 2023.05.20 |
---|---|
[데이터베이스] 저장 구조 - 해싱 방법, 저장 구조의 비교 (0) | 2023.05.18 |
[데이터베이스] B+Tree, 인덱스의 종류 (1) | 2023.05.18 |
[데이터베이스] 저장 구조 - 순차 방법(힙), B-Tree (0) | 2023.05.18 |
[데이터베이스] 릴레이션, 스키마, 관계형 데이터베이스 개요와 SQL (0) | 2023.05.08 |