티스토리 뷰
728x90
Linux의 경우 page cache, buffer cache, file cache구조가 있습니다.
가상 메모리
- 프로세스에서 메모리를 다루기 쉽게 하는 이점을 제공
- OS가 커널에서 메모리를 추상화함
- 페이지 : OS가 물리 메모리를 확보/관리하는 단위. 가상 메모리의 최소 단위
리눅스의 페이지 캐시 원리
커널이 한 번 할당한 메모리를 해제하지 않고 계속 남겨두는 것이 페이지 캐시의 기본입니다.
캐싱 과정
- 디스크의 내용을 일단 메모리에 읽어 들인다 : 페이지가 작성된다
- 작성된 페이지는 파기되지 않고 메모리에 남는다 : 페이지 캐시
- 예외의 경우를 제외하고 모든 I/O에 투과적으로 작용한다. (디스크의 캐시를 담당하는 곳 - VFS)
리눅스는 메모리가 비어있으면 거의 다 캐싱하는 데에 메모리를 사용합니다. 그 상태에서 프로세스로부터 메모리 할당 요청이 들어오면 그때 오래된 캐시 데이터를 파기하고(LRU) 프로세스에게 메모리를 할당합니다
DB서버 분산의 목표는 캐시 용량 늘리기
- AP서버처럼 단순 copy&paste 증설할 시 각 서버의 캐시 용량은 여전히 부족하므로 분산의 효과를 전혀 볼 수 없습니다.
- 데이터가 DB서버의 메모리보다 용량이 적으면 캐시만으로도 I/O 부하 해결이 가능하지만, 메모리보다 데이터가 커지면 (= 캐시로 해결할 수 없는 규모의 데이터일 경우) 국소성을 고려한 DB서버 증설을 고려할 수 있습니다
단순 대수 늘리기 만으로 DB 확장성을 확보할 수 없는 이유
캐시 용량이 부족하여 서버를 증설하였는데, 그 부족한 용량까지 그대로 늘어나는 것이기 때문에 변함없이 캐싱 되질 않습니다.
참고자료
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788994506128#N
728x90
'기초지식' 카테고리의 다른 글
Dockerfile, Docker Compose 간단 정리 (0) | 2024.01.07 |
---|---|
CQRS 패턴 간단 정리 (0) | 2022.10.29 |
CPU bound, IO bound (0) | 2022.08.15 |
웹소켓 (Web Socket) 정리 (0) | 2022.05.22 |
MSA 기초 정리 (0) | 2022.04.27 |
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 샤드
- index
- laravel
- 쿠버네티스
- k8s
- kubernetes
- java
- docker
- 몽고디비
- database
- php
- laravel 테스트
- Apache POI
- redis
- pods
- NoSQL
- 도커
- phpUnit
- 라라벨
- MySQL
- 대규모 데이터 처리
- 주니어개발자
- mockery
- mongoDB
- 샤딩
- 백엔드
- 리눅스 컨테이너
- 분산처리
- springboot
- laravel 테스트코드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함