[DB] 인덱스(Index)의 개념과 특징
·
DB
인덱스(Index)인덱스(Index)는 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 인덱스를 사용하면 특정 컬럼(또는 컬럼 조합)의 값을 기반으로 데이터를 빠르게 찾을 수 있다. 인덱스를 활용하면, 데이터를 조회하는 SELECT 외에도 UPDATE 나 DELETE 의 성능이 향상된다. 그러한 이유는 해당 연산을 수행하려면 해당 대상을 조회해야만 작업을 할 수 있기 때문이다. 인덱스가 있으면 O(logn) 시간 안에 정확한 행을 찾아 작업을 수행하지만, 인덱스가 없으면 O(n) 시간이 걸려 성능이 저하된다. 보조 인덱스는 (당연하게) B+트리 형태로 디스크에 저장되며, 테이블 테이터와는 독립적으로 유지된다. InnoDB 스토리지 엔진에서의 클러..
[DB] B-Tree 가 DB 인덱스(Index) 로 사용되는 이유
·
DB
Database 의 특징DB 는 secondary storage(ssd, hdd 등) 에 저장된다(데이터들을 영구적으로 저장해야 하므로 당연함)DB 에서 데이터를 조회할 때, secondary storage 에 최대한 적게 접근하는 것이 성능 면에서 좋다.block 단위로 읽고 쓰기 때문에 연관된 데이터를 모아서 저장하면 더 효율적으로 읽고 쓸 수 있다.B-Tree 계열의 장점1. 디스크 I/O 효율성B-Tree 계열의 특징B-Tree 는 각 노드에 여러 개의 키를 저장할 수 있으며, 자식 노드에 대한 포인터도 함께 저장된다.데이터베이스에서 B-Tree 는 한 노드를 한 번의 디스크 읽기로 가져올 수 있도록 설계된다. 즉 한 번의 디스크 I/O 로 다수의 키를 탐색할 수 있다.트리의 높이가 낮기 때문에 ..