IT 일기장

[DB 공통] 인덱싱 작업 본문

프로그래밍 언어/SQL(DB)

[DB 공통] 인덱싱 작업

뽕슈 2021. 12. 13. 00:01
반응형

내가 진행하는 프로젝트 검색 제목, 검색 키워드, 검색 내용을 추가해서

3개와 연관된 제목과 컨텐츠 상세까지 보여주게 해달라는 요청 건이 들어왔다.

 

수석님께 도움을 요청했다. "가능하지만 관리자 쪽에서 직접 수기로 작성해야 되고 검색속도는 보장 못한다.

우리는 검색 솔루션 회사가 아니기 때문에 부분은 감안해야된다."

라고 얘기해주셔서 우선 기획자분이 컨펌 안받았으니 미리 개발 하지말고 대기하라고 해주셨다

 

그리고나서 수석님이 인덱스에 대해서 가르쳐주셨는데 단순히 "속도 빠르게 해주는거다."

라고만 기억하고 있었을뿐, 어떤 방법으로 속도를 빠르게 해주는건지는 몰랐다.

 

수석님의 설명을 들어보니 이해가됐다..

 

예를들어 1000 짜리 종이로 써져있는 회원들의 정보가 있다고 하자.

1000 짜리 종이에서 "홍길동"라는 회원의 이름을 찾아야 된다고 하면 정말 힘들것이다.

그럼 이제 1000장짜리에서 이름만 적혀있는 부분을 옮겨서 엑셀 파일에 저장해서 검색 한다고 하자.

그럼 Ctrl + F 누르고 "홍길동" 입력해서 검색하면 끝이다. 정말 쉽다.

 

이렇게 검색 속도를 빠르게 해주도록 도와주는 일련의 과정들을 인덱싱 작업이라고 하더라.

 

그럼 인덱싱 작업을 실무에서는 어떻게 할까?

현재 사이트에 내용이 들어가는 content 컬럼은 모두 CLOB 타입이다.

CLOB 타입은 인덱싱 작업이 불가능하다. 그래서 속도가 느려질 밖에 없다카더라..

이럴 때 바로 인덱싱 작업을 해주는거다.

검색 솔루션도 이와 유사항 방법을 사용 한다고하니 정리해둔다.

 

  1. 검색한 Content 데이터를 가져온다.
  2. CLOB 데이터를 나눈다.
  3. 테이블 새로 하나 파서 VARCHAR VARCHAR2 타입 컬럼에 삽입한다. (최대 4000까지 들어가므로 적당한 수치로 나눠서 잘라주면 될거같다.)
  4. 새로 만들어진 테이블은 스케줄러를 돌려줘야한다. 왜냐하면 검색하는 테이블은 내용이 바뀔수도 있으니까 새로 만들어진 테이블에 계속 쌓이게 해줘야된다. (보통은 1일을 주기로 한다고 한다.)
  5. 새로 만든 테이블을 조회하면
반응형
Comments