Today I Learned 9일차

유승완·2022년 5월 17일
0

Today I Learned

목록 보기
3/11

DB Index

인덱스의 개념
1. 인덱스는 데이터를 빠르게 찾을 수 있는 수단으로서 , 테이블에 대한 조회 속도를 높여주는 자료 구조이다.
2. 인덱스는 기본 테이블의 특정 레코드 위치를 알려주는 용도로 사용한다.
3. 인덱스는 자동으로 생성되지 않기 때문에 데이터베이스 사용자가 지정해 주어야 한다.
4. 데이터베이스 사용자가 특정 컬럼을 기본키(PK)로 지정할 경우에 인덱스는 자동 생성된다.
5. 기본 테이블에서 번호를 기본키로 하는 경우, 번호에 대한 인덱스는 자동으로 생성되지만, 기본키가 아닌 전화번호나 출생시를 기준으로 하는 인덱스는 자동으로 생성되지 않는다.
6. 기본 테이블의 성명 컬럼에 인덱스가 없는 경우, 테이블의 전체 내용을 검색하게 된다.
7. 만약, 인덱스가 생성되어 있다면 테이블 일부분을 검색하여 데이터를 빠르게 찾을 수 있다.
8. 인덱스는 조건절에 '='로 비교되는 컬럼을 대상으로 인덱스를 생성하면 검색속도를 높일 수 있다.

인덱스 설계 과정
1. 접근 경로 수집
2. 분포도 조사를 통한 후보 컬럼 선정
3. 접근 경로 결정
4. 컬럼 조합 및 순서 결정
5. 적용 시험

1)접근경로수집

  • 접근 경로는 테이블에서 데이터를 검색하는 방법을 의미한다
  • 접근 경로 유형은 테이블 스캔과 인덱스 스캔이 있다.
  • 접근 경로 수집이란 SQL이 최적화 되었을 때 인덱스 스캔을 해야 하는 검색 조건들을 수집하는 것이다.
  • 경로 수집 방법은 사용하고 있는 애플리케이션 소스 안에 있는 SQL 문장을 수집하거나 DBMS의 트레이스(Trace) 도구를 사용하여 SQL 문장을 수집하는 것이다.

2)분포도 조사를 통한 후보 컬럼 선정

  • 분포도 = 데이터별 평균 행(Row) 수 / 테이블의 행(Row) 수
  • 일반적으로 분포도가 10 ~ 15% 정도이면 인덱스 컬럼 후보로 사용한다.
  • 분포도가 좋은 컬럼은 단독적으로 생성하여 활용도를 향상시킨다.
  • 자주 조합되어 사용되는 컬럼은결합 인덱스로 생성하여 활용한다.
  • 결합 인덱스는 구성되는 컬럼 순서 선정이 유의해야 한다.
  • 가능한 한 수정이 빈번하지 않은 컬럼을 선정한다.

3)접근 경로 결정

  • 인덱스 후보 목록을 이용하여 접근 유형에 따라 어떤 인덱스 후보를 사용할 것인가를 결정한다.

4)컬럼 조합 및 순서 결정

  • 단일 컬럼의 분포도가 양호하면 단일 컬럼 인덱스로 확정한다.
  • 하나 이상의 컬럼 조합이 필요한 경우는 추가 고려하여 인덱스 컬럼 순서를 결정한다.

5)적용시험

  • 설계된 인덱스를 적용하고 접근 경로별로 인덱스가 사용되는지 시험해야 한다.
  • 여러 개의 접근 경로가 존재하는 테이블은 여러 개의 인덱스가 만들어지므로 의도한 실행 계획으로 동작하는지 확인해야 한다.

인덱스 설계 시 고려사항
1. 새로 추가되는 인덱스가 기존 접근 경로에 영향을 미칠 수 있음을 유의한다.
2. 너무 많은 인덱스는 오버헤드로 작용한다.
3. 인덱스는 추가적인 저장 공간이 필요하다.
4. 인덱스와 테이블 데이터의 저장 공간은 적절히 분리되어야 한다.

항해톡 발표준비로 여러 유튜브들을 쭉 돌면서 ppt준비를 위해 어느정도 내용을 정리해봤다.
언젠간 한번 인덱스에 대해 알아보아야 해야겠다 생각했는데, 이번 기회에 공부하게 되었다.

profile
나를 위한 기록

0개의 댓글