본문 바로가기

InnoDB

(4)
[Real MySQL] 테이블 스페이스와 Double Write Buffer - InnoDB 스토리지 엔진 아키텍처 : On-Disk Structures InnoDB 스토리지 엔진 아키텍처 InnoDB 스토리지 엔진은 현재 MySQL의 스토리지 엔진 중 가장 많이 사용된다. InnoDB 는 MySQL 에서 사용할 수 있는 스토리지 엔진 중 거의 유일하게 레코드 기반의 잠금을 제공하기 때문에 높은 동시성 처리가 가능하며 안정적이고 성능이 뛰어나다. 테이블 스페이스 (Tablespace) InnoDB 스토리지 엔진에서 테이블을 생성할 때, 테이블 데이터와 인덱스 데이터를 저장할 위치를 지정할 수 있다. 이러한 위치를 테이블 스페이스(Tablespace)라고 한다. InnoDB 스토리지 엔진은 다섯 가지 유형의 테이블 스페이스를 제공한다. 시스템 테이블 스페이스(System Tablespace), 일반 테이블 스페이스(General Tablespace), 파일..
[Real MySQL] 어댑티브 해시 인덱스 - InnoDB 스토리지 엔진 아키텍처 : In-Memory Structures 어댑티브 해시 인덱스 (Adaptive Hash Index) 어댑티브 해시 인덱스(Adaptive Hash Index)는 사용자가 수동으로 생성하는 인덱스가 아닌, InnoDB 스토리지 엔진에서 사용자가 자주 요청하는 데이터에 대해 자동으로 생성하는 인덱스이다. 데이터 페이지를 메모리(버퍼 풀) 내에서 접근하는 것을 더 빠르게 만드는 기능이다. B-Tree 검색 시간을 줄여주기 위해 도입되었다. InnoDB 스토리지 엔진은 자주 읽히는 데이터 페이지의 키 값을 이용해 해시 인덱스를 만든다. 필요할 때마다 어댑티브 해시 인덱스를 검색해서 레코드가 저장된 데이터 페이지를 즉시 찾아간다. B-Tree 에서 루트 노드부터 리프 노드까지 찾아가는 비용이 없어지고, 그만큼 CPU 는 적은 일을 하며 쿼리의 성능을 ..
[Real MySQL] 체인지 버퍼 - InnoDB 스토리지 엔진 아키텍처 : In-Memory Structures InnoDB 스토리지 엔진 아키텍처 InnoDB 스토리지 엔진은 현재 MySQL의 스토리지 엔진 중 가장 많이 사용된다. InnoDB 는 MySQL 에서 사용할 수 있는 스토리지 엔진 중 거의 유일하게 레코드 기반의 잠금을 제공하기 때문에 높은 동시성 처리가 가능하며 안정적이고 성능이 뛰어나다. 체인지 버퍼 (Change Buffer) 체인지 버퍼(Change Buffer)는 InnoDB 스토리지 엔진의 버퍼 풀의 일부로, 보조 인덱스(세컨더리 인덱스) 페이지에 대한 변경 사항을 캐시하는 특수한 데이터 구조이다. 이러한 변경 사항은 INSERT, UPDATE 또는 DELETE 작업(DML)의 결과일 수 있으며, 해당 페이지가 다른 읽기 작업에 의해 버퍼 풀에 로드될 때 나중에 병합된다. 또한 체인지 버퍼..
[Real MySQL] 버퍼 풀, 로그 버퍼 - InnoDB 스토리지 엔진 아키텍처 : In-Memory Structures InnoDB 스토리지 엔진 아키텍처 InnoDB 스토리지 엔진은 현재 MySQL의 스토리지 엔진 중 가장 많이 사용된다. InnoDB 는 MySQL 에서 사용할 수 있는 스토리지 엔진 중 거의 유일하게 레코드 기반의 잠금을 제공하기 때문에 높은 동시성 처리가 가능하며 안정적이고 성능이 뛰어나다. 버퍼 풀 (Buffer Pool) 디스크의 데이터 파일이나 인덱스 정보를 메모리에 캐시해두는 메모리 공간이다. 쓰기 작업을 지연시켜 일괄 처리할 수 있도록 해준다. 일반 애플리케이션에서는 INSERT, UPDATE, DELETE 와 같은 DML이 데이터 파일의 이곳저곳에 위치한 레코드를 변경하기 때문에 랜덤한 디스크 작업을 발생시킨다. 이때 버퍼 풀이 이러한 변경된 데이터를 모아서 처리하여 랜덤한 디스크 작업의 ..