-
6.IndexComputer Science/Database 2022. 1. 7. 16:28
∙Index
∘RDBMS에서 검색 속도를 높이기 위해 테이블의 컬럼을 색인화하는 기술
-색인화 된(B+Tree구조로) Index 파일 검색으로 검색 속도를 향상시킨다.
-해당 테이블의 record를 full scan하지 않는다.
○테이블 생성 과정
➀.frm: 테이블 구조 저장
➁.MYD: 실제 데이터 저장
➂.MYI: Index 정보 저장(비워져 있다가 인덱싱하는 경우 생성)
○장점
-검색 속도가 빨라진다.
-전반적인 시스템 부하를 줄일 수 있다.
-여러 필드로 이루어진(다중 필드) 인덱스를 사용하면 첫 필드 값이 같은 레코드도 구분할 수
있다.
-where 절에서 자주 사용 되거나, 외래키가 사용되거나, join을 자주하는 컬럼에 유리하다.
○단점
-.MYI 파일 크기가 증가한다. (DB의 10퍼센트 내외의 공간이 추가로 필요)
-여러 사용자가 한 페이지를 동시에 수정할 수 있는 병행성이 줄어든다.
-인덱스 된 필드에서 데이터를 업데이트하거나, 레코드를 추가 또는 삭제할 때 인해 성능이
떨어집니다. (인덱스 생성, 정렬, 재작성 등)
-데이터 중복도가 높거나, DML(Data Manipulation Language)이 자주 일어나는 컬럼에
분리하다.
○DML(Data Manipulation Language)
➀INSERT
-기존 block에 여유가 없을 때 새로운 데이터가 입력되면 새로운 block을 할당 받고 key를 옮김
-Index split 작업 동안 해당 block의 key 값에 대해서 DML이 블로킹 되어 대기 이벤트가
발생한다.
➁DELETE
-테이블에서 데이터가 삭제되는 경우: 데이터가 지워지고 다른 데이터가 그 공간 사용 가능
-Index에서 데이터가 삭제되는 경우: 데이터가 지워지지 않고 사용 안 됨 표시만 해둠
-테이블의 데이터 수와 인덱스의 데이터 수가 다를 수 있다.
➂UPDATE
-테이블에서 업데이트가 발생하면 Index는 업데이트 하지 않는다.
-Index에서는 삭제가 발생한 후, 새로운 작업의 삽입작업 까지 2배의 작업이 소요되기 때문이다.
-Index는 빠른 탐색을 위한 기준점으로서 그대로 사용할 수 있다.출처
'Computer Science > Database' 카테고리의 다른 글
9.Redis (0) 2022.01.07 8.트랜잭션(Transaction) 격리 수준(Isolation level) (0) 2022.01.07 5.Anomaly(이상) (0) 2022.01.07 4.SQL과 NOSQL의 차이 (0) 2022.01.07 3.SQL Injection (0) 2021.09.28