MySQL/MariaDB MyISAM 스토리지 엔진 특성
- Version : Mariadb 5.5.4.2-WinX64
MyISAM은 ISAM(indexed Sequential Access Method)의 단점을 보완하기 위해 나온 업그레이드 버전으로 비-트랜잭션-세이프(non-transanctional-safe) 테이블을 관리 한다.
[기본적인 특징]
- 데이터 저장에 제한이 없고 효율적이다. (속도가 빠른편이다.)
- B-Tree, R-Tree, Full-Text 인덱스를 지원
- 테이블 락 사용으로 읽기 성능은 좋으나 빈번한 쓰기가 빈번한 경우 부적합.
- 트랜잭션 미지원
- MyISAMpack라는 압축 옵션 제공
MyISAM에는 InnoDB의 버퍼풀과 비슷한 역할을 하는 것이 키 캐시(Key cache, 키 버퍼라고도 함)다. 하지만 MyISAM 키 캐시는 인덱스만 대상으로 작동하며 또한 인덱스의 디스크 쓰기작업에 대해서만 부분적으로 버퍼링 역할을 한다. 테이블 데이터는 캐시나 버퍼링 기능이 없어 테이블의 데이터 읽기나 쓰기 작업은 항상 디스크를 사용한다. 키 캐시의 효율성은 다음 히트율로 확인 할 수 있다.
키 캐시 히트율(%) = 100 – (Key_reads / Key_read_requests * 100) |
Key_reads는 인덱스를 디스크에서 읽은 횟수를 저장하는 상태 변수이며 Key_read_requests는 키 캐시로부터 인덱스를 읽은 회수를 저장하는 상태 변수이다. 상태 변수를 확인하는 방법은 SHOW GLOBAL STATUS 명령을 사용한다.
show global status like 'Key%'; |
키 캐시는 32비트, 64비트 운영체제 모두 하나의 키 캐시에 4GB이상 할당 할 수 없다. 만약 4GB이상 키 캐시를 할당하고 싶다면 기본 키 캐시 외에 별도의 명명된 키 캐시 공간을 할당해야 한다.
아래 스크립트는 기본 키 캐시(Key_buffer_size) 4GB외에 t_board 2GB와 t_comment 2GB 키 캐시 공간을 설정 한다.
set global key_buffer_size = 4096*1024; set global Kbuff_board.key_buffer_size = 2048*1024; set global kbuff_comment.key_buffer_size = 2048*1024; |
설정된 각 키 캐시 공간에 인데스가 캐시되도록 설정한다. 이렇게 설정하면 t_board 테이블은 kbuff_board 키 캐시를, t_comment 테이블은 kbuff_comment 키 캐시를 사용한다.
CACHE INDEX t_board IN Kbuff_board; CACHE INDEX t_comment IN kbuff_comment; |
[참고자료]
- RealMySQL / 위키북스
- The MyISAM Key Cache
https://dev.mysql.com/doc/refman/5.0/en/myisam-key-cache.html
2015-07-30 / 강성욱 / http://sqlmvp.kr
'MySQL, MariaDB' 카테고리의 다른 글
MySQL/MariaDB 사용자 생성 (0) | 2019.03.24 |
---|---|
파일로 저장되어 있는 데이터를 테이블로 Bulk Insert 하기 (0) | 2015.12.21 |
MySQL/MariaDB InnoDB 스토리지 엔진 특성 (0) | 2015.07.27 |
MySQL/MariaDB 아키텍처 – 쿼리 캐시(Query Cache) (0) | 2015.07.22 |
MySQL/MariaDB 백업 & 복원 - mysqldump (0) | 2015.07.16 |