추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조
즉, Table의 Column을 색인화함. (*B+ Tree구조)
B+ Tree 구조
데이터의 빠른 접근을 위한 인덱스 역할만 하는 비단말 노드가 추가로 있음. B Tree의 변형 구조로, index부분과 leaf노드로 구성된 순차 데이터 부분으로 이루어짐. 인덱스 부분의 key값은 leaf에 있는 key값을 직접 찾아가는데에 사용함.
Index를 해당 컬럼에 주게 되면 초기 Table 생성 시, FRM, MYD, MYI 3개의 파일이 만들어진다.
Index를 해당 컬럼에 만들게 되면, 해당 컬럼을 따로 인덱싱하여 MYI파일에 입력한다.
이후, 사용자가 SELECT쿼리로 Index를 사용하는 쿼리를 사용 시, 해당 테이블을 검생하는 것이 아닌 MYI파일의 내용을 검색한다. 만약 Index를 사용하지 않은 SELECT쿼리라면, 풀 스캔을 할 수 밖에 없다.
📍 DML이란, 데이터베이스의 내부 데이터를 관리하기 위한 언어이다. 데이터를 조회 추가, 변경, 삭제 등의 작업을 수행하기 위해 사용된다. 예) SELECT, INSERT, UPDATE, DELETE
1. 새로운 Block을 할당 받은 후, Key를 옮기는 작업을 수행 (많은 양의 Redo가 기록되고, 유발)
2. Index Spilt 작업이 진행되는 동안, 해당 Block의 Key값에 대해서 DML이 블로킹 됨, 즉 대기 이벤트 발생
3. 기존 Block에 여유가 없을 때, 새로운 Data가 입력됨.
-> Table의 Data 수와 Index의 Data 수가 다를 수 있음.
1. Table에서 update가 발생하는 경우 : Index는 Update 할 수 없음.
2. Index에서 update가 발생하는 경우 : **Delete가 먼저 발생**한 후에 새로운 작업의 **Insert작업이 수행**됨.