RDB 인덱스 오버헤드

Gunjoo Ahn·2022년 10월 10일
0

인덱스란?

말 그대로 색인이다. 책의 앞이나 뒤에 단어와 페이지 번호가 적혀져있는 색인 섹터를 본 적이 있을 것이다. 색인 섹터에서 알파벳 순으로 나열한 단어중 하나를 찾으면 해당 정보가 책의 몇 페이지에 있는지 바로 알 수 있다. 이처럼 데이터베이스가 책이고 색인 섹터가 인덱스이다. 인덱스를 참고하면 원하는 데이터가 데이터베이스에서 어디에 있는지 찾는 속도가 빨라진다.

인덱스 오버헤드

그러면 인덱스를 만드는 것이 항상 좋은 것 아닌가? 라는 생각을 할 수 있다. 안타깝게도 그렇지 않다. 데이터베이스에 새로운 정보를 넣거나 테이블 컬럼에서 인덱스 걸린 정보를 수정할 때마다 당연하게도 기존 인덱스도 수정해주어야 한다. 책 내용이 바뀌었는데 색인 섹터의 페이지 번호가 그대로면 안되지 않겠는가? 따라서 그냥 데이터만 조작하면 되는 상황에서 인덱스까지 조작해야하는 오버헤드가 생긴 것이다.

인덱스는 데이터의 저장 성능을 희생하고 읽기 성능을 취하는 것이다. 이러한 점으로 인하여 삽입, 수정이 잦은 컬럼에는 인덱스를 걸지 않는 것을 추천한다.

참고

update, delete에 대해서 인덱스 컬럼을 수정하지 않고 where절에 인덱스를 잘 걸어준다면 오히려 성능 향상이 있을 수 있다.

Reference

https://asfirstalways.tistory.com/333

profile
Backend Developer

0개의 댓글