대용량 처리 이해/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를 발생시키는것 이다.