파티셔닝 2

3-2. 분산을 고려한 MySQL 운용

앞서 설명한 바와 같이 분산을 할 때는 데이터 규모에 맞게 탑재 메모리를 조정하고, 메모리 증설로도 대응할 수 없을 경우 분산해야 한다. 앞으로는 DB레이어에서 MySQL운용, 스케일 아웃 전략에 대해 공부해보자 (OS 캐시, 인덱스를 적절하게 설정하기, 확장을 전제로 한 시스템 설계 순으로 공부한다. 1. OS 캐시 활용 전체 데이터 크기에 주의해서 데이터량 < 물리 메모리를 유지해야 한다. 메모리가 부족할 경우에 증설을 하고 스키마 설계가 데이터 크기에 미치는 영향을 고려해야 한다. 그냥 아무 생각 없이 create table로 스키마 설정하면 안 돼. 최소 정수 int형은 32비트 = 4바이트, 문자열은 8비트=1바이트 같은 기본적인 수치는 기억하자. 2. 인덱스의 중요성 MySQL의 인덱스는 기본..

3-1. OS 캐시

1. OS 캐시의 구조 메모리를 이용해서 디스크 액세스를 최대한 줄여야 한다. 이를 위해 OS 캐시를 이용. 예를 들어 리눅스 페이지 캐시를 살펴보자 '프로세스 1'은 데이터를 읽어오기 위해 직접 디스크에 액세스 할 수 없고 가상 메모리에 접근해서 데이터를 읽어와야 한다. OS가 읽어온 블록을 메모리에 쓰고 OS는 그 메모리 주소를 프로세스 1에게 전달한다. 그러면 '프로세스 1'이 그 데이터에 접근할 수 있는 것이다. 반면, '프로세스 2'가 동일한 데이터에 접근하기 위해서 위와 같은 작업을 반복하는 것이 아니라 커널은 한 번 할당한 메모리를 해제하지 않고 남겨두기 때문에 '프로세스 1'이 데이터를 읽어올 때 남겨둔 페이지를 사용하면 된다. 이 개념이 페이지 캐시인 것이다. (파일 캐시가 아니고 페이지..