데이터베이스 기초

100만 행이 있는 회원 표의 회원번호 열에 B+ 트리 인덱스를 만들었다. 일반적으로 기대할 수 있는 효과와 그 대가의 조합으로 올바른 것은?

  1. AWHERE 회원번호 = 12345 같은 검색이 빨라지는 한편, 행의 추가나 갱신 때마다 인덱스도 갱신하므로 쓰기는 느려진다
  2. B모든 열에서의 검색이 빨라지며, 대가는 없다
  3. C표의 행이 회원번호 순서로 정렬되므로 어떤 검색이든 빨라지는 한편, 저장 용량은 절반이 된다
정답과 해설 보기

정답: A. WHERE 회원번호 = 12345 같은 검색이 빨라지는 한편, 행의 추가나 갱신 때마다 인덱스도 갱신하므로 쓰기는 느려진다

인덱스(색인)는 표의 특정 열의 값으로부터 그 값을 가진 행의 위치를 재빨리 찾기 위한 자료 구조로, 관계형 데이터베이스에서는 B+ 트리가 자주 사용됩니다. 인덱스가 없으면 WHERE 회원번호 = 12345인 행을 찾는 데 100만 행을 차례로 조사(전체 스캔)해야 하지만, B+ 트리에서는 루트에서 리프까지 몇 단계만 따라가면 찾을 수 있습니다. 예를 들어 노드 하나에서 100개로 갈라진다면 100 × 100 × 100 = 100만이므로 약 3단계입니다. B+ 트리의 리프는 값의 순서로 연결되어 있으므로 BETWEEN 같은 범위 검색이나 ORDER BY 정렬에도 사용할 수 있습니다. 한편 행을 추가·갱신·삭제할 때마다 인덱스도 갱신해야 하므로 쓰기는 느려지고, 인덱스만큼의 저장 용량도 필요합니다. 인덱스를 만들지 않은 열에서의 검색은 빨라지지 않습니다.

이 분야 연습하기 분야로 돌아가기

데이터베이스 기초의 다른 문제

  1. 100만 행의 회원 표에서 회원번호(모두 다름), 도도부현(47종류), 성별(2종류로 거의 반반) 열에 각각 B+ 트리 인덱스를 만드는 것을 생각한다. WHERE 절로 한 열의 값을 지정하여 검색할 때 인덱스의 효과가 가장 작다고 생각되는 열은?
  2. NoSQL이라고 불리는 데이터베이스 중 키-값형의 특징으로 일반적으로 올바른 것은?
  3. 여러 서버에 데이터의 복제본을 두는 분산 데이터베이스에 대한 CAP 정리의 설명으로 적절한 것은?
  4. 관계형 데이터베이스의 용어에서 표(릴레이션)의 한 행에 해당하는 것은?
  5. 관계형 데이터베이스의 표에서 기본 키로 지정하는 열(또는 열의 조합)이 반드시 만족해야 하는 조건은?