인덱싱

caynny·2025년 1월 22일

생소한개념

목록 보기
2/5

인덱싱이 일어나는 시점이 궁금해서 작성하는 글


데이터 저장 시 인덱싱은 자동으로 처리된다.

  • 일반적으로 인덱싱은 검색을 최적화하기 위해 초기 데이터 저장 시에 이루어진다.
  • 데이터를 저장할 때 인덱스가 자동으로 생성되며, 이후에는 검색이 빨라질 수 있도록 도와준다.
  • CREATE INDEX구문을 사용하거나, 컬럼에 인덱스를 설정하면, 해당 컬럼에 대한 인덱스가 자동으로 생성된다. 이후, 데이터베이스가 새로운 데이터를 넣을 때 자동으로 해당 컬럼에 대한 인덱스도 갱신된다.

예시코드

CREATE INDEX idx_username ON users(username);
  • 테이블에서 pk를 자동으로 증가시킬 때 쓰는 AutoIncrement와 다르게, 컬럼에 따로 추가되는 구조이다.
  • 만약 위의 예시와 같이 name 컬럼에 대한 검색이 자주 일어날 것 같다면, 해당 컬럼에 대한 추가적인 인덱스를 생성해야 한다.
  • 즉 특정 컬럼의 검색 최적화를 위해 추가적인 인덱슬르 생성하는 것이다.

ElasticSearch 나 Solar 같은 검색 엔진은 데이터를 처음 저장할 때 텍스트 기반의 역 인덱스를 생성해 놓는다.

  • 이 역 인덱스를 통해 검색이 빠르게 일어난다.

인덱스 갱신

DB에 수정 작업이 일어난다면, 기존 데이터가 그대로 사라지는 것이 아니라 기존 인덱스도 이에 맞춰 자동으로 갱신된다.


실시간 검색과 대기 시간

대부분의 경우는 인덱스가 즉시 갱신되지만, 크기가 큰 시스템에서는 데이터를 즉시 갱신하는 데 부하가 있을 수 있기 때문에 일정 시간이 지난 후 (배치) 인덱스를 갱신할 수 도 있다.

  • ElasticSearch의 경우 데이터를 실시간으로 인덱싱하거나, 일정 주기마다 데이터를 모아 인덱싱하는 방식으로 설정할 수 있다.

결론

검색 시에 인덱싱이 되는 것이 아니다.
인덱싱은 데이터를 저장하는 과정에서 한 번만 이루어지며, 그 이후 검색은 그 인덱스에 저장된 정보를 참조하게 된다.
즉, 검색 시에는 이미 만들어 놓은 인덱스를 기반으로 결과를 빠르기 찾기 때문에 검색 속도가 매우 빨라진다.

profile
공부해볼게용

0개의 댓글