[Database] 클러스터링 인덱스와 논 클러스터링 인덱스 0. 들어가기전에 자주 나오는 인덱스 개념인 클러스터링 인덱스와 논 클러스터링 인덱스에 대해서 알아보았습니다. 1. 클러스터링 인덱스 MySQL InnoDB에서는 클러스터링 인덱스를 항상 사용한다.보통 테이블의 PK에 적용이 되는 인덱스이며, PK가 없으면 not null + unique한 컬럼에 사용이 되며, 이마저도 없으면 임의의 값으로 MySQL이 만들어서 사용한다. 그래서 항상 InnoDB를 사용하는 테이블에는 클러스터링 인덱스가 적용되어 있다고 할 수 있다. 그렇다면 왜 이런 방식을 사용하는 걸까? 그 이유는 검색 속도가 빠르기 때문이다. 클러스터링 인덱스는 테이블을 물리적으로 정렬을 한 인덱스이다. 즉, PK가 있다면 PK 기준으로..
인덱스
[Database] 인덱스 0. 들어가기 전에 성능 측정 공부를 하기전에 인덱스에 대해서 알아봤습니다. 1. 인덱스 인덱스는 무엇일까? 해당하는 단어를 사전에서 찾아보면 색인이라고 되어있다. 즉 무언가를 찾을 때 더 빨리 찾을 수 있게 하는 방법이라는 뜻이다. 좀 더 프로그래밍 관점에서 설명하자면 인덱스는 저장 성능(쓰기, 삭제, 수정) 성능을 희생하면서 읽기 성능을 높이는 방법이다. 그렇다면 이런 생각이 들 것이다. 저장 성능이 떨어진다고? 항상 좋은 것만은 아니네? 맞는 말이다. 일반적으로 인덱스는 10%의 저장소의 비율을 차지하고, 인덱스의 정렬 비용 때문에 저장 성능이 떨어진다. 따라서 인덱스는 읽기 성능을 높이기 때문에 저장 횟수보다 읽기 횟수가 더 많은 서비스에서 사용되면 좋다. 클라우드 서비..
[데이터베이스] 인덱스 1. 인덱스란? 데이터베이스의 저장 성능을 희생(약 10%)하고, 읽기 속도를 높이는 기능 책의 목차와 비슷함. 2. 장단점 장점 읽기 성능↑ 시스템 부하↓ 단점 데이터 추가, 삭제 시 성능 감소 INSERT, UPDATE, DELETE 시 추가 연산이 필요하기 때문 INSERT : 새로운 인덱스 추가 UPDATE : 기존 인덱스를 사용하지 않음 처리 및 갱신된 데이터의 인덱스 추가 DELETE : 삭제하는 데이터의 인덱스를 사용하지 않음으로 변경 데이터 베이스의 용량을 추가적으로 차지 3. 사용하는 곳 규모가 작지 않은 테이블 변경이 자주 발생하지 않는 컬럼 JOIN, WHERE, ORDER BY에 자주 사용되는 컬럼 카디널리티(기수성)이 높은 컬럼 카디널리티 : 한 컬럼이 갖고..