내 잡다한 노트
순차 쓰기와 랜덤쓰기 본문
순차 쓰기 ( Sequential Write ) 와 랜덤 쓰기 ( Random Write )
이거는 디스크(스토리지)에 데이터를 기록할 때의 접근 방식을 구분하는 용어이다.
디스크가 데이터를 쓰는 물리적, 논리적 패턴에 따라 성능 차이가 생기기 때문에, 데이터베이스, 파일시스템, 어플리케이션 설계 시 이 둘의 특성을 잘 이해하는 것이 중요하다.
1. 순차 쓰기(Sequential Write)
- 개념
- 디스크의 연속된 공간(논리 주소/물리 주소)에 순서대로 데이터를 기록하는 방식입니다.
- 예: 파일 마지막 위치에 데이터를 계속 이어붙이거나(Append), 로그 파일을 순차적으로 기록하는 형태.
- 장점
- 디스크 구조 관점에서, 자기 디스크(HDD)는 **디스크 헤드(헤드 암)**를 이동(시크, seek)할 필요 없이 연속 구역에 데이터를 기록하므로, **처리 속도가 빠르고 지연(레이턴시)**이 적습니다.
- SSD에서도 대체로 순차 쓰기는 내부적인 블록 관리가 단순해 비교적 빠른 쓰기 성능이 나옵니다.
- LSM-Tree(Log Structured Merge Tree) 같은 스토리지 엔진은 내부적으로 작은 쓰기 작업들을 한꺼번에 모아 순차 쓰기로 바꿔 처리(Compaction 등)함으로써 쓰기 효율을 높입니다.
- 적용 예시
- 로그 파일(append-only), 분산 메시징 시스템(Kafka의 세그먼트 파일), 확장 중인 대형 바이너리 파일 등.
- 대량의 데이터를 한꺼번에 쌓는 배치 처리, 스트리밍 로그 수집에도 유리합니다.
2. 랜덤 쓰기(Random Write)
- 개념
- 디스크 내 여러 위치(물리적으로 떨어진 공간)에 임의 순서로 데이터를 기록하는 방식입니다.
- 예: 기존 파일의 중간 일부를 업데이트, 테이블의 특정 행을 수정(OLTP), 인덱스 노드 분할 등.
- 단점
- HDD(하드디스크)에서는 랜덤 쓰기 시 디스크 헤드를 매번 새로운 위치로 이동해야 하므로, **시크 타임(Seek Time)**이 늘어나고 성능 저하가 큽니다.
- SSD(솔리드 스테이트 드라이브)에서도 HDD처럼 물리적 헤드 이동은 없지만, 플래시 메모리 블록 단위 재작성으로 인해 여전히 랜덤 쓰기는 오버헤드가 생길 수 있습니다(Erase-Write 사이클, Wear Leveling 등).
- 적용 예시
- 전통적인 OLTP 데이터베이스(UPDATE, DELETE 연산이 빈번), 파일시스템에서 파일의 중간이나 여러 조각에 분산된 작은 쓰기 작업 등.
- 인덱스 기반 검색 시스템에서 문서가 갱신될 때, 인덱스 구조 내부의 일부만 수정·재배치해야 하는 경우.
3. 순차 쓰기 vs. 랜덤 쓰기 성능 비교
- HDD에서의 차이
- 순차 쓰기: 헤드 암 이동이 최소화되어 **처리량(IOPS)**이 높고 **지연(Latency)**이 낮습니다.
- 랜덤 쓰기: 빈번한 물리적 위치 이동으로 시크 타임이 증가, IOPS가 크게 떨어질 수 있습니다.
- SSD에서의 차이
- 순차 쓰기: 내부적으로 연속 블록에 쓰거나, SSD 컨트롤러가 연속적으로 쓸 수 있는 블록을 잡아서 빠르게 처리하는 편.
- 랜덤 쓰기: HDD만큼 극단적 차이는 없지만, 여전히 Wear Leveling과 Garbage Collection 과정에서 지연이나 쓰기 증폭(Write Amplification)이 발생할 수 있습니다.
- 데이터베이스 엔진 설계
- OLTP(트랜잭션성 DB)에서는 랜덤 쓰기가 불가피하지만, 버퍼링, 캐싱, 트랜잭션 로그(순차 쓰기) 등을 통해 최소화하려고 노력합니다.
- OLAP(대규모 분석)이나 로그성 데이터에서는 순차 쓰기가 많아 유리한 구조(파일 기반, LSM-Tree 등)를 쓰는 경우가 많습니다.
4. 어느 방식이 적합한가?
- OLTP 환경
- 랜덤 쓰기가 많은 소규모 다빈도 업데이트/삭제/삽입 쿼리가 발생.
- RDBMS나 Key-Value 스토어(B-Tree, 일부 LSM-Tree)에서는 이 문제를 완화하기 위해 Write-Ahead Logging(WAL), Buffer Pool 등을 사용해 한 번의 물리적 쓰기에 여러 논리적 쓰기를 모읍니다.
- OLAP/배치 처리/로그 수집
- 주로 순차 쓰기(Append)로 대량 데이터를 적재하는 패턴이 많음.
- HDFS, Kafka, Cassandra(LSM-Tree 기반), ClickHouse(파일 Append 후 Merge), 각종 DW(데이터 웨어하우스) 등은 순차 쓰기 모델을 적극 활용해 집계·분석 성능과 확장성을 높입니다.
- 혼합 접근
- 최근에는 HTAP(Hybrid Transactional/Analytical Processing) 개념이 부상하면서, 둘을 절충하려는 시도가 많지만, 물리적 쓰기 패턴에 따라 최적화 기법이 달라 실질적 구현 난이도가 높습니다.
'DB' 카테고리의 다른 글
Grouping 이란? (0) | 2025.01.21 |
---|---|
SQL 쿼리 기본적인 것들 정리 (SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER ) (0) | 2025.01.21 |
B-Tree란? (0) | 2025.01.20 |
LSM Tree 란? (0) | 2025.01.20 |
Column형 DB란? (0) | 2025.01.20 |