MySQL InnoDB PK, Index Key 내부 MySQL InnoDB는 Index 테이블을 B-Tree (Balanced tree) 로 구성. Delete index 재정렬이 일어나지 않음 delete 되었다는 '상태값' 만 변경함으로써 index 테이블에 성능영향을 최소화 하기 위함 - by 순차 I/O, 랜덤 I/O 에 대해서 ... (Full Table Scan 이 더 효율적일 때도 있다.) Disk I/O의 속도는 '헤더' 의 움직임과 연관이 있다. '디스크에 데이터를 쓰고 읽는 데 걸리는 시간은 디스크 헤더를 움직여서 읽고 쓸 위치로 옮기는 단계에서 결정된다.' '일반적으로 쿼리를 튜닝하는 것은 랜덤 I/O 자체를 줄이는 것이 목적이라 할 수 있다.' 순차 I/O 는 탐색을 위해 헤더를 1개씩 움직이는 반면 랜덤 I/O는 더 많이 움직인다. Index Scan: 랜덤 I/O , Full Table Scan:순차 I/O 'Index Range Scan은 데이터를 읽기 위해 주로 랜덤 I/O 를 사용하며, 풀 테이블 스캔은 순차 I/O를 사용한다. 그래서 큰 테이블의 레코드를 읽을 때는 풀 테이블 스캔을 사용하여 디스크헤더 의 움직임을 최소화 하는 방법이 더 효율적이다. 이런 형태는 웹서비스 보다는 데이터 웨어하우스나 통계 작업에서 자주 사용된다.' InnoDB Buffer Pool 구조 랜덤 I/O , Disk write 의 비용이 크기 때문에 InnoDB Engine 은 Buffer Pool (메모리 캐시) 을 사용하여 처리한다. 최근 접근한 데이터는 다시 Access 될 가능성이 큼. Insert Buffer Thread에 의해 처리. DB write 는 Disk Write Thread가 처리. INDEX Column은 'NOT NULL' 로 설정 INDEX 로 잡은 Column 에...