MySQL 성능 개선하기

노영석·2023년 2월 24일

1. indexing

1. 인덱스를 어디에 거는게 좋을지
    - Cardinality
        - 얼마나 유니크한 값들이 많은지 
        - 식당 예약을 예시로
             오전 / 오후
             고객 성별 남자 / 여자 
    - Update Frequency
    - Size (인덱스 키 값의 크기)
2. 인덱스를 충분히 활용할 수 있도록 쿼리를 작성하는 방법들에 대해 논의
    - ORDER BY
    - 쿼리를 잘하려면?
        - 기본 쿼리 사용
            1. 숫자
            2. 날짜 
            3. 불리언 
            4. 연산자
            5. full table scan 
        - 인덱스를 잘 사용해야함.

2. normalization

1. 데이터 중복이 어떻게 줄어드는지
2. MySQL이 중복 데이터를 방지할 수 있기 때문
3. 관계형 데이터베이스의 장점

3. partitioning

1. 데이터를 나눠서 저장함
2. 늘 좋은 것은 아님
3. 파티션의 종류
     range
     list
     hash
     range-hash
     range-list
4. partition 삭제

4. cache

1. 자주 쓰는 건 어디다 저장했다가 가져올 수 있다
2. 근데 8.0부터 사라짐
    - 이론상으로는 효율에 도움이 된다고 생각했지만 실제 퍼포먼스 측면상 그렇지 않음
    - 그리고 동시성 유지 측면에서 좋지 않음 

5. 기타 query optimization

profile
공부하자!

0개의 댓글