Superkkt Blog

MySQL Memory Database Engine

2010/05/24 02:28

MySQL 데이터베이스 엔진 중 모든 데이터를 메모리에 저장하는 엔진이 있다. 시스템에 장착된 메모리가 모든 데이터를 올리기에 충분하고, 빠른 검색 속도가 필요하다면 사용해볼만 하다.

메모리 데이터베이스 테이블을 만드는 방법은 기존의 테이블 생성 방법과 동일하며 아래와 같이 테이블 엔진에 MEMORY만 지정해주면 된다.

CREATE TABLE t (i INT) ENGINE = MEMORY;

테이블 스키마는 디스크에 저장되기 때문에 시스템 재시작 후에도 남아있지만, 데이터는 메모리에만 저장되기 때문에 휘발성으로 모두 사라지게 된다. 메모리 데이터베이스의 최대크기는 max_heap_table_size 변수값이다. 메모리 데이터베이스 테이블이 생성되는 시점의 변수값이 해당 테이블의 최대 크기가 된다.

그리고 메모리 데이터베이스에서는 variable-length row를 사용할 수 없기 때문에 varchar로 선언된 필드가 모두 최대값만큼 공간을 차지하게 된다. 따라서 동일한 데이터가 일반적인 데이터베이스 엔진을 사용해서 디스크에 저장된 경우와 메모리 데이터베이스로 저장된 경우 용량이 굉장히 심하게(예: 90MB vs. 5GB) 차이가 날 수 있다.

메모리 데이터베이스를 효율적으로 사용하는 방법은 초기에 데이터베이스를 구축할 때는 일반 데이터베이스 엔진으로 만들고, 실제 서비스에서는 SELECT만 하는 경우 메모리 데이터베이스를 만들고 INSERT INTO ... SELECT 구문 등을 사용해서 디스크에 저장된 데이터를 모두 메모리 데이터베이스로 이동시켜서 사용하는 방법이다.

<참조>


2010/05/24 02:28 2010/05/24 02:28

trackbacks

trackbacks rss

http://superkkt.com/trackback/532

Leave a Comment