[대규모 서비스를 지탱하는 기술] Chap. 3 MySQL 운용

golony·2022년 11월 14일
0

스터디

목록 보기
1/1

인덱스

  • 노드 크기를 지정할 수 있는 B트리로 구성 되어있다.
    -> 파일시스템의 블록단위로 노드크기를 지정할 수 있다. -> 디스크 탐색 횟수 최적화가 가능하다.
    -> 탐색에 필요한 순회 횟수를 줄일 수 있다.

인덱스의 적용

  • 조회의 조건이 되는 컬럼: where, order by, group by
  • 주의) 여러 조건을 동시에 적용하는 경우는 복합 인덱스가 필요하다.
    • 각각의 인덱스가 존재하는 경우, 둘 중 하나만 옵티마이저가 결정해 사용
    • 하나의 쿼리에는 하나의 인덱스만 적용

explain

  • 어떤 인덱스를 사용하는 지 확인 할 수 있는 명령어 (실행 계획과는 다른 것 같다.)
  • Extra 절: Using where, Using filesort (외부 정렬 필요), Using temporary (임시 테이블 필요)

분산

  • 마스터/슬레이브

  • 마스터: 갱신(CUD) 쿼리를 수행

    • 분산 시 고려해야 하는 부분 많음
    • 구현의 개선
    • 테이블을 작은 크기로 분할 -> 디스크, 서버단위로 분산
  • 슬레이브: 조회 쿼리를 수행, 마스터의 데이터를 주기적으로 폴링

    • 조회하는 데이터와 서버의 메모리를 고려하는 것이 1순위
    • 단순히 서버 댓수를 늘려 분산 가능

파티셔닝

  • 테이블을 다른 서버에 위치하는 분산 방법
  • 다른 서버에 위치한 테이블 간에는 JOIN 불가능
    • 즉, JOIN은 향후에 파티셔닝 계획이 없는 테이블 간에만 사용가능
profile
더 나은 세상으로 나아가는 서비스를 만들고 싶습니다.

0개의 댓글