2021.10.30 TIL

pbg0205·2021년 10월 30일
0

TIL

목록 보기
2/13

인덱스

  • 인덱스는 지정한 컬럼을 기준으로 메모리 영역에 목차를 생성하는 과정
  • command(insert, update, delete)의 성능을 희생하고, query(select)의 성능을 향상시킨다.
    (하지만 update, delete하기 위한 조회 성능은 향상된다.)

B-Tree 인덱스


출처 : 이동욱님 인덱스 정리

  • 인덱스 탐색은 Root - Branch - leaf - 디스크 저장소 순으로 진행된다.

  • Branch(페이지 번호2)

    • dept_no d001 + 10017 <= emp_no <= 10024의 리프노드의 부모로 존재한다.

    • 인덱스를 향상시키는 종류는 디스크 저장소를 얼마나 덜 접근하는지, Root에서 Leaf까지 오고가는 횟수를 얼마나 줄이는가이다.

    • 인덱스 갯수는 3-4개 정도가 적당하다.

      • 많은 인덱스에 row를 추가할 때마다 인덱스를 추가하고 Command에 관한 성능이슈가 발생한다.

        • 인덱스의 너무 많은 공간을 차지한다.

        • 많은 인덱스일 경우, 옵티마이저가 잘못된 선택할 확률이 높다.


인덱스 키 값 크기

  • 페이지 : 디스크에서 데이터를 저장하는 기본 단위

  • 페이지는 16KB로 크기가 고정되어 관리한다.


인덱스 컬럼 기준

  • 카디널리티 : 해당 컬럼의 중복된 수치
    • 중복이 높으면 카디널리티가 낮다.

      • 낮은 카디널리티 : 성별, 학년

        • 높은 카디널리티 : 주민번호, 계좌번호
    • 인덱스의 효율을 높이기 위해서는 해당 인덱스로 많은 부분을 걸러내야 한다.
      (인덱스를 통해 데이터의 대부분을 걸러내기 때문에 빠른 검색이 가능하다.)


인덱스를 완벽하게 이해하지는 못했지만 점점 더 어떤 느낌인지 감은 익어가고 있는 것 같다👍


이동욱님 [mysql]인덱스 정리 및 팁

profile
🧑‍💻 steady developer

0개의 댓글