대용량 처리 이해/Mysql
데이터베이스 성능
훈지런
2022. 12. 22. 15:59
메모리 / 디스크 비교
메모리 | 디스크 | |
---|---|---|
속도 | 빠름 | 느림 |
영속성 | 휘발 | 비휘발 |
가격 | 고가 | 저가 |
데이터는 결국 디스크에 저장된다.
- 디스크에 쓰기전에 메모리에 쓴다.
- 메모리에 쓰는 속도는 빠르기 때문에 데이터 베이스 성능의 핵심은 디스크 I/O를 최소화하는것이다.
그럼 디스크 접근을 줄이는 방법은??
- 메모리에 올라운 데이터로 최대한 요청을 처리하자
- 메모리 캐시 히트율을 높이자
디스크에 쓰기전에 전원 공급이 없으면 휘발하는 메모리에 저장된 데이터가 유실될수도?
- WAL(Wright Ahead Logging) 사용
- WAL : 트랜잭션 발생시 로그에 일단 기입하여 기록을 남기고, 특정 데이터가 쌓이면 이를 flush 해 DB의 disk에 DATA BLOCK 형태로 write하게 된다.
- 로그로 남기때문에 문제가 생겨도 순차적 재생으로 원자성이 보장된다.
일반적으로 트랜잭션은 무작위하게 Write가 발생.
WAL은 하나의 파일에 순차적으로 Write함
따라서 데이터 베이스 성능의 핵심은 I/O를 줄이는게 아니고 랜덤 I/O를 줄이고 순차 I/O를 발생시키는것 이다.