Mysql 운용시 고려할 3가지 포인트
- OS 캐시 활용
- 전체 데이터양 < 물리 메모리 유지 → 이유 : 물리 메모리보다 클 경우 메모리 swap 발생 → 속도저하
- 메모리 부족 시 증설
- 전체 데이터 크기는 스키마 설계에 따라 크게 영향을 받음
- 올바른 인덱스 설정 및 활용
- Mysql 인덱스는 B+ 트리 형태( 다분 트리 & 평행 트리)
- 트리 높이에 따른 계산량 O(log n)
- B 트리로 노드를 1블록에 모아 저장하도록 구성가능 → 디스크 I/O 감소(Seek 횟수 감소)
- Mysql은 인덱스 사용 여부에 따른 속도 차를 알아서 판단하여 최적화 작업 (데이터가 작을 경우 트리 순회 overhead가 더 클 수 있음)
- where, order by, group by 조건에 지정된 칼럼 인덱스 적용
- 명시적으로 추가한 인덱스 + PK, unique 칼럼 또한 인덱스 적용
- 복수 칼럼은 복합 인덱스 사용 → 단일 인덱스 컬럼을 동시 사용 시 하나의 컬럼만 적용 (Mysql 1쿼리 → 1 인덱스 사용 특성)
- explain 명령어를 통한 인덱스 적용 여부 확인
- 확장을 전제로 한 설계
- 레플리케이션(master/slave 구조의 다중서버)