CHAPTER04 - 분산을 고려한 MySQL 운용
2022. 11. 14. 21:20
- 현재까지의 화두
- 분산할 때 고려할 점
- 국소성
- 데이터 규모에 맞게 탑재 메모리 조정
- 메모리 증설로 대응할 수 없을 경우에는 분산
- 메모리와 디스크 속도차와 그로 인한 I/O 분산의 어려움
- 분산할 때 고려할 점
- 이번장의 핵심
- DB 스케일 아웃 전략
- 인덱스의 중요성
- MySQL 분산
- 스케일아웃과 파티셔닝
- DB 스케일 아웃 전략
강의11 인덱스를 올바르게 운용하기 - 분산을 고려한 MySQL 운용의 대전제
- 분산을 고려한 MySQL 운용 세가지 포인트
- OS 캐시 활용
- 인덱스
- 확장을 전제로 시스템 설계(강의 12)
- OS 캐시 활용
- 전체 데이터 크기에 주의해서 데이터량이 물리 메모리보다 가능한 한 적어지도록 유지
- 메모리가 부족할 경우에는 증설
- 스키마 설계가 데이터 크기에 미치는 영향을 고려
- 인덱스의 중요성
- 인덱스는 주로 탐색을 빠르게 하기 위해 사용
- 내부 데이터 구조로 트리 사용(MySQL의 경우 B+트리, 계산량을 O(log n))
- 이분트리와 달리 노드의 크기를 적당한 사이즈로 정할 수 있음
- b+트리는 노드를 블록단위로 저장하여 탐색 시에 seek를 최소화 한다.
- 인덱스의 효과
- 계산량 측면에서도 개선될 뿐만 아니라 디스크 seek 횟수면에서도 개선됨
강의12 MySQL의 분산 - 확장을 전제로 한 시스템 설계
- MySQL의 레플리케이션 기능
- 마스터를 정하고 마스터를 뒤따르는 서버를 정해두면 마스터에 쓴 내용을 슬레이브가 polling하여 동일한 내용으로 자신을 갱신하는 기능
- 참조 쿼리는 슬레이브로, 갱신 쿼리는 마스터로
- 참조계열 쿼리는 확장
- 서버를 늘리기만 하면 됨
- 대수를 늘리기보다도 메모리에 맞추는것이 중요
- 마스터는 확장할 수 없음
- 갱신계열 쿼리가 늘어나면 험난해짐
- 웹 어플리케이션은 대부분의 경우 90% 이상이 참조쿼리
- 마스터 부하는 테이블 분할이나 다른 구현 등으로 연구
강의 13 MySQL의 스케일아웃과 파티셔닝
- MySQL의 스케일아웃 전략
- 데이터가 메모리에 올라가는 크기?
- YES -> 메모리에 올린다
- NO -> 메모리 증설 or 파티셔닝
- 데이터가 메모리에 올라가는 크기?
- 파티셔닝은 테이블 A와 테이블 B를 서로 다른 서버에 놓아서 분산하는 방법
- 국소성을 활용해서 분산할 수 있으므로 캐시가 유효하여 효과적임
- 파티셔닝의 상반관계
- 운용이 복잡해짐
- 용도가 다른 서버가 분산되어 구분이 어려워짐
- 고장률이 높아짐
- 대수가 늘어나는 만큼 고장 확률이 높아짐
- 운용이 복잡해짐
'책 > 대규모 서비스를 지탱하는 기술' 카테고리의 다른 글
CHAPTER07 - 알고리즘 실용화, 가까운 예로 보는 이론,연구의 실전 투입 (0) | 2022.11.16 |
---|---|
CHAPTER05 - 대규모 데이터 처리 실전 입문 - 애플리케이션 개발의 급소 (0) | 2022.11.15 |
CHAPTER03 - OS 캐시와 분산 (0) | 2022.11.11 |
CHAPTER02 - 메모리와 디스크, 웹 애플리케이션과 부하 (0) | 2022.11.10 |