ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MyISAM 스토리지 엔진 아키텍처
    Technique/RDBMS 2016. 5. 19. 21:49
    반응형


    InnoDB의 버퍼 풀과 비슷한 역할을 하는 것이 MyISAM의 키 캐시 ( Key Cache, 키 버퍼 라고도 한다 )이다.

    이름 그대로 MyISAM키 캐시는 인덱스만 대상으로 작동하며 또한 인덱스의 디스크 쓰기 작업에 대해서만 부분적으로 버퍼링 역할을 한다. 

    키 캐시의 효율성을 나타내는 수식은 아래와 같다.


    키 캐시 히트율 ( Hit rate ) = 100 - ( Key_reads / Key_read_requests * 100 )


    - Key_reads : 인덱스를 디스크에서 읽어들인 횟수를 저장하는 상태 변수

    - Key_read_requests : 키 캐시로부터 인덱스를 읽은 횟수를 저장하는 상태 변수.


    매뉴얼에서는 일반적으로 키 캐시를 이용한 쿼리의 비율 ( 히트율 ) 을 99% 이상으로 유지하라고 권장한다. 만약 히트율이 99% 미만이라면 키 캐시를 조금더 크게 설정하는 것이 좋다. 그러나 32bit 운영체제와 64bit 운영체제 모두 하나의 키 캐시에 4GB이상의 메모리 공간을 설정할 수 없다.

    혹시 4GB이상의 키 캐시를 할당하고 싶다면 기본 키 캐시 이외에 별도의 명명된 키 캐시 공간을 설정해야 할 것이다.

    이 키캐시 공간을 설정하는 파라미터는 Key_buffer_size 이다.

    혹시 당신이 기본이외의 추가적으로 캐키시를 할당할 준비를 했다면 어떤 인덱스를 캐시할지 MySQL 엔진에게 알려줘야만한다. 


    MyISAM 테이블의 인덱스는 키 캐시를 이용해 디스크를 검색하지 않고도 충분히 빠르게 검색할 수 있다.

    하지만 MyISAM 테이블의 데이터는 디스크로부터의 I/O를 해결해 줄 만한 어떠한 캐시나 버퍼링 기능이 MyISAM 스토리지 엔진에는 존재하지 않는다.

    그렇기 때문에 MyISAM 테이블의 데이터 읽기나, 쓰기 작업은 항상 운영체제의 디스크 읽기 또는 쓰기 작업으로 요청될 수 밖에 없다.


    운영체제 캐시 기능은 InnoDB와 같은 데이터의 특성을 알고 전문적으로 캐시나 버퍼링을 하지는 못하지만 그래도 여전히 없는것 보단 낫다. 운영체제의 캐시 공간은 남는 메모리를 사용하는 것이 기본 원칙이다.


    만약 데이터베이스에서 MyISAM 테이블을 주로 사용하고 있다면 운여체제가 사용할 수 있는 캐시 공간을 위해 충분한 메모리를 비워둬야 이러한 문제를 방지할 수 있다.


    MyISAM이 주로 사용되는 MySQL에서 일반적으로 키 캐시는 최대 물리 메모리의 40% 이상을 넘지 않게 설정하고, 나머지 메모리 공간은 운영체제가 자체적인 파일 시스템을 위한 캐시 공간을 마련할 수 있게 해주는 것이 좋다.


    반응형

    'Technique > RDBMS' 카테고리의 다른 글

    에러 로그 파일  (0) 2016.05.19
    MEMORY 스토리지 엔진 아키텍처  (0) 2016.05.19
    복제 ( Replication )  (0) 2016.05.17
    플러그인 스토리지 엔진 모델  (0) 2016.05.16
    메모리 할당 및 사용 구조  (0) 2016.05.16

    댓글

Designed by Tistory.