728x90
Index
DB Index
- 목적
- RDBMS에서 검색 속도를 높이기 위한 기술
- Table의 Column을 색인화 한다.(따로 파일로 저장한다)
- 과정
- Table을 생성하면, MYD, MYI, FRM 3개의 파일이 생성된다.
- FRM : 테이블 구조가 저장되어 있는 파일이다.
- MYD : 실제 데이터가 있는 파일이다.
- MYI : Index 정보가 들어가 있는 파일이다.
- Index를 사용하지 않는 경우, MYI 파일은 비어져 있다. 그러나, 인덱싱하는 경우 MYI 파일이 생성된다.
- 이후에 사용자가 Select 쿼리로 Index를 사용하는 Column을 탐색 시, MYI 파일의 내용을 검색한다.
- Table을 생성하면, MYD, MYI, FRM 3개의 파일이 생성된다.
- 단점
- Index 생성시, .mdb 파일 크기가 증가한다.
- 한 페이지를 동시에 수정할 수 있는 병행성이 줄어든다.
- 인덱스 된 Field에서 Data를 업데이트하거나, Record를 추가 또는 삭제시 성능이 떨어진다.
- 데이터 변경이 자주 일어나는 경우, Index를 재작성해야 하므로, 성능에 영향을 미친다.
- 상황 분석
- 사용하면 좋은 경우
- Where절에서 자주 사용되는 Column
- 외래키가 사용되는 Column
- Join에 자주 사용되는 Column
- Index 사용을 피해야 하는 경우
- Data 중복도가 높은 Column
- DML이 자주 일어나는 Column
- 사용하면 좋은 경우
- DML이 일어났을 때의 상황
- INSERT
- 기존 Block에 여유가 없을 때, 새로운 Data가 입력된다.
- DELETE
- Table에서 data가 delete 되는 경우 : Data가 지워지고, 다른 Data가 그 공간을 사용 가능하다.
- Index에서 Data가 delete 되는 경우 : Data가 지워지지 않고, 사용 안 됨 표시만 해둔다.
- Table의 Data 수와 Index의 Data수가 다를 수 있다.
- UPDATE
- Table에서 update가 발생하면 -> Index는 Update 할 수 없다.
- Index에서는 Delete가 발생한 후, 새로운 작업의 Insert 작업 / 2배의 작업이 소요되어, 힘들다.
- INSERT
728x90
'Computer > CS' 카테고리의 다른 글
Database - 트랜잭션 격리 수준(Transaction Isolation Level) (0) | 2024.07.11 |
---|---|
Database - 정규화(Normalization) (0) | 2024.07.10 |
Database - Anomaly (0) | 2024.07.09 |
SQL과 NOSQL의 차이 (0) | 2024.07.09 |
SQL Injection (0) | 2024.07.08 |