RealMySQL 4.3 - MyISAM 스토리지 엔진 아키텍처
책/RealMySQL

RealMySQL 4.3 - MyISAM 스토리지 엔진 아키텍처

728x90
반응형

4.3. MyISAM 스토리지 엔진 아키텍처

키 캐시

  • 키캐시 (InnoDB의 버퍼풀):
    • 인덱스만을 대상으로 작동
    • 인덱스의 디스크 쓰기 작업에 대한 버퍼링 역활

키 캐시 hit rate = 100 - (key_reads / key_read_requests * 100)

  • Default 키캐시는 제한된 메모리가 존재 (예. 32비트 OS: 4GB)
    • 제한된 메모리 보다 더 할당하고 싶으면 Default 키캐시 외 별도의 키캐시를 설정해야함
      • 예: key_buffer_size: 4GB, kbuf_board.key_buffer_size: 2GB
    • 추가 키캐시는 어떤 인덱스를 캐시할지 설정 필요
      • 예: CACHE INDEX db1.board, db2.board IN kbuf_board

 

운영체제의 캐시 및 버퍼

  • MyISAM 테이블 데이터 (즉, row)에 대해서는 캐시/버퍼링 기능이 존재하지 않음
  • 데이터 읽기/쓰기 작업은 항상 OS 디스크 읽기/쓰기 작업으로 요청이 됌
  • 대부분의 OS에는 자체 캐시/버퍼링 기능이 존재하여 MyISAM 성능은 OS 기능에 의존성이 높음
    • OS 캐시는 애플리케이션들이 사용하고 남은 메모리 공간을 캐시로 사용함
    • 그래서 MyISAM 사용할때는 항상 OS 메모리 공간을 예의주시해야함

MyISAM 스토리지 엔진 구조

 

데이터 파일과 프라이머리 키(인덱스) 구조

  • InnoDB: 프라이머리키에 의한 클러스터링 vs. MyISAM: 클러스터링 없이 INSERT 되는 순서대로 데이터 파일에 저장됌
  • MyISAM의 모든 레코드는 ROWID (물리적 주솟값) 을 갖고 primary/secondary 인덱스는 레코드의 ROWID 값을 포인터로 갖음
  • ROWID: 가변길이 / 고정길이 방식으로 저장 가능
    • 고정길이: MyISAM 테이블 생성할때 MAX_ROWS 옵셜 활성화된 경우
    • 가변길이: 그외 케이스일때 / 2 byte ~ 7 byte 를 갖고 첫번째 바이트는 길이정보를 저장
728x90
반응형