11강 인덱스를 올바르게 운용하기

분산을 고려한 MySQL 운용

  1. OS 캐시 활용
  2. 인덱스(index, 색인) 활용 - 적절하게 설정하면 데이터 검색을 빠르게 가능
  3. 확장을 전제로 한 설계

OS 캐시활용

  • 전체 데이터 크기에 주의 = > 데이터량 < 물리 메모리 유지
    • 메모리가 부족하면 메모리 증설
  • 스키마 설계가 데이터 크기에 미치는 영향 고려
    • 스키마: DB내에 어떤 구조로 데이터가 저장되는가를 나타내는 데이터베이스 구조와 제약조건에 관해 전반적인 명세를 기술한 것

인덱스의 중요성

*인덱스는 주로 탐색을 빠르게 하기 위한 것

 

MySQL 의 인덱스는 B Plus Tree 라는 데이터 구조

 

B Plus Tree ?

데이터 삽입이나 삭제를 반복하는 경우에도 트리의 형태에 치우침이 생기지않는 평형트리

트리를 구성하는 각 노드가 N 개 이상의 자식을 가질 수 없는 다분트리(n‐ary tree)

  • 각 노드가 여러개의 자식을 가질 수 있지만 N 개로 제한되는 트리

→ Seek 횟수를 최소화하는 트리구조

 

인덱스의 효과

4000만 개의 데이터가 있는 경우

인덱스가 없으면 -> 4000만 번 탐색

인덱스가 있으면  -> (B 트리경우) log 4000만 = 25.25번 만 탐색

→ Seek 횟수 개선

 

인덱스가 작용하는지 확인하는 법

    explain 명령 사용

첫 번째는 entryid(eid) 를 쿼리로 던진 경우 - > 1 행 만 조사

두 번째는 use index로 탐색 조건으로 하고자하는 eid 와는 굳이 다른 칼럼의 인덱스를 일부러 사용 -> 962 만 이상의 행 조사

 explain 명령으로 자신이 던지려는 쿼리에 제대로 인덱스가 작용하는지 여부 확인 필요

explain 명령에서 속도 확인도 필요 

12강 MySQL의 분산

- 확장을 전제로 한 시스템 설계-

MySQL의 레플리케이션 기능

정해진 마스터 아래에 슬레이브를 정하고 AP 서버에서는 로드밸랜서를 경유하여 슬레이브로 질의를 하는 구성

 

MySQL의 레플리케이션을 이용하여  위의 그림과 같이 구성이 가능

갱신 / 쓰기 쿼리 : 마스터에서만 수행

select 등 참조 쿼리 : 슬레이브에서 수행

 

마스터/슬레이브 의 특징

 

마스터(갱신/쓰기 계열)는 확장을 하지 않는다. 

  - 웹 애플리케이션에서는 참조 계열 쿼리가 90% 이상 - 병목현상이 일어날 일이 드물다.

 

슬레이브(참고 계열)는 확장을 한다. 

  - 서버를 늘리면 확장가능 동시에 메모리에 맞추는 것 도 중요

13강 MySQL의  스케일아웃과 파티셔닝

MySQL의 스케일아웃 전략 요약

  • 데이터가 메모리에 올라가는 크기?
    • Yes : 메모리에 올린다.
    • No  : 메모리 증설 / 증설이 불가능하면 파티셔닝

파티셔닝 (테이블 분할)에 관한 보충

 - 하나의 테이블 분할  : 특정 알고리즘으로 분할 ( ex> 해쉬태그 단위, 문자열 범위 [a-d, e-h, ..])

 

국소성을 고려힌 분산을 통해서 캐시가 유효함(효율이 높아진다) -> 데이터 접근 속도 향상 ->  파티셔닝의 효과가 향상

 

캐시의 효율이 높아지는 이유

  • 국소성(Locality)을 활용한 파티셔닝으로 인해 관련된 데이터가 같은 위치에 저장
  • 프로그램이 필요한 데이터에 접근할 때 캐시에 해당 데이터가 이미 저장되어 있을 확률이 높아짐
  • 캐시 히트(cache hit) 비율이 증가하면 데이터를 빠르게 가져올 수 있어 전체 시스템 성능이 향상

 

파티셔닝을 전제로 한 설계

 

*JOIN 쿼리는 대상이 되는 테이블을 앞으로도 서버 분할하지 않을 것이라고 보장할 수 있을때에만 사용

 

파시셔닝의 장점 과 단점

장점

  • 부하가 내려간다.
  • 국소성이 증가해서 캐시 효과가 높아진다.

단점

  • 운용이 복잡해진다. - 어디서 고장이 났는지 찾는 것이 어렵다.
  • 서버대수가 증가하는 만큼 고장확률이 높아진다.
  • 서버대수를 증가하는데 경제적인 비용이 든다.(메모리가 저렴해서 메모리를 증가하는 편이 더 유용할 수도 있다.)

다중화에 필요한 서버 대수는 ?

마스터 1 대 + 슬레이브 3대 = 총 4대

(이유)  마스터 1 대 + 슬레이브 2대 인 경우  슬레이브 1대가 고장난경우 대체서버에 복사를 하기위해 운영중인 서비스를 중단해야 한다.

 

+ Recent posts