MySQL

MyISAM 스토리지 엔진

iksadnorth 2023. 8. 1. 21:00

해당 게시물은 'Real MySQL 8.0'라는 책을 참고해서 작성했습니다.

👣 개요

MySQL 8.0 이전 버전에서 시스템 테이블로 사용되던 스토리지 엔진이다.

👣 키 캐시

InnoDB의 Buffer Pool과 비슷한 역할을 수행하는 것.
하지만 인덱스만을 대상으로 작동하고 인덱스의 Disk Write에 대해서만 부분적으로 버퍼링을 수행한다.

👣 OS의 시스템 캐시 및 버퍼

MyISAM에는 Disk I/O를 줄여주는 어떠한 캐시나 버퍼링 기능을 탑재되어 있지 않다.
때문에 Disk I/O를 그대로 수행하기에 속도가 느리다.

하지만 대부분의 OS에는 DISK I/O에 대한 캐시, 버퍼링 메커니즘을 탑재하고 있어서
이렇게 간접적으로 기능들을 이용할 수 있다. 

이것 또한 OS를 위한 메모리 공간이 존재해야 가능한 것이기에 MyISAM을 사용하고 싶다면 꼭 OS를 위한 메모리 공간을 확보해줘야 한다.

👣 데이터 파일과 Primary Key 구조

MyISAM은 PK에 의한 클러스터링 없이 데이터 파일이 Heap 공간처럼 활용된다.
다시 말해, PK 값과 무관하게 INSERT되는 순서대로 데이터 파일이 저장된다는 것이다.

그리고 MyISAM에 저장되는 레코드는 모두 ROWID라는 물리적 주솟값을 가지고 있어서
PK와 세컨더리 인덱스 모두 ROWID를 포인터로 가진다.

'MySQL' 카테고리의 다른 글

트랜잭션과 잠금  (0) 2023.08.02
MySQL 로그 파일  (0) 2023.08.01
InnoDB 스토리지 엔진  (0) 2023.08.01
MySQL 아키텍처  (0) 2023.08.01
사용자 계정  (0) 2023.07.31