[개발지식] 인덱스와 전산처리 성능 간의 관계

Hyo Kyun Lee·2024년 10월 23일
0

개발지식

목록 보기
56/69

1. 개요

성능 개선 작업을 하면서, 인덱스 처리하는 작업이 많아졌는데 전산처리(INSERT/UPDATE)할때 어떠한 관계가 있는지 궁금해서 관련 내용을 찾아보았다.

2. 인덱스와 처리성능은 비례관계가 아니다

보통 인덱스 처리 시 처리성능이 안좋아진다고 들었는데, 꼭 그렇지만은 아닌것 같았다.

체결내역을 저장/수정할 때 성능테스트간 TPS가 인덱스 전,후의 성능이 그렇게 차이가 있진 않았기 때문에 그 이유를 알기 위해 이론적으로 관련 내용을 찾아보았다.

일단 결론은 다음과 같다.

  • 인덱스가 있을때 BULK 연산을 할 경우 인덱스 재정렬을 하기 때문에 확실히 성능이 안좋아진다.
  • 인덱스가 있어도 where 절을 통해 update row를 특정하면 인덱스 재정렬이 발생하지 않아 빠른 처리를 기대할 수 있다.
  • INSERT, DELETE의 경우 새로운 데이터가 추가 및 삭제 되면서 기존에 인덱스 페이지에 저장되어 있던 탐색 위치가 수정되어야 하므로 인덱스 재정렬이 무조건 발생하므로 처리 속도가 늦어진다.

체결처리의 경우,

  • 성능에 영향을 미칠 정도의 부하/트랜잭션을 발생하지 않았다.
  • UPDATE의 경우 where 조건으로 update row를 특정하여, 인덱스를 생성했어도 bulk처리로 하지 않았으므로 성능에 큰 영향을 주지 않을 것이다.

향후 다건처리를 할 때는 안정성과 성능을 모두 만족할 수 있는 where = ? 조건을 반드시 반영해야겠다.

3. 참고자료

INSERT와 인덱스의 관계 - https://m.blog.naver.com/anstnsp/222275138194
UPDATE와 인덱스의 관계 - https://velog.io/@qjvk2880/%EC%9D%B8%EB%8D%B1%EC%8A%A4%EB%A5%BC-%EA%B1%B8%EB%A9%B4-%EC%A7%84%EC%A7%9C-%EB%8A%90%EB%A6%B4%EA%B9%8C

0개의 댓글