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
- 예:
- 제한된 메모리 보다 더 할당하고 싶으면 Default 키캐시 외 별도의 키캐시를 설정해야함
운영체제의 캐시 및 버퍼
- MyISAM 테이블 데이터 (즉, row)에 대해서는 캐시/버퍼링 기능이 존재하지 않음
- 데이터 읽기/쓰기 작업은 항상 OS 디스크 읽기/쓰기 작업으로 요청이 됌
- 대부분의 OS에는 자체 캐시/버퍼링 기능이 존재하여 MyISAM 성능은 OS 기능에 의존성이 높음
- OS 캐시는 애플리케이션들이 사용하고 남은 메모리 공간을 캐시로 사용함
- 그래서 MyISAM 사용할때는 항상 OS 메모리 공간을 예의주시해야함
데이터 파일과 프라이머리 키(인덱스) 구조
- InnoDB: 프라이머리키에 의한 클러스터링 vs. MyISAM: 클러스터링 없이 INSERT 되는 순서대로 데이터 파일에 저장됌
- MyISAM의 모든 레코드는 ROWID (물리적 주솟값) 을 갖고 primary/secondary 인덱스는 레코드의 ROWID 값을 포인터로 갖음
- ROWID: 가변길이 / 고정길이 방식으로 저장 가능
- 고정길이: MyISAM 테이블 생성할때 MAX_ROWS 옵셜 활성화된 경우
- 가변길이: 그외 케이스일때 / 2 byte ~ 7 byte 를 갖고 첫번째 바이트는 길이정보를 저장
728x90
반응형
'책 > RealMySQL' 카테고리의 다른 글
RealMySQL 5.1 - 트랜잭션 (0) | 2023.04.04 |
---|---|
RealMySQL 4.4 - MySQL 로그 파일(log file) (0) | 2023.03.18 |
RealMySQL 4.2 - InnoDB 스토리지 엔진 아키텍쳐 (2) (0) | 2023.02.19 |
RealMySQL 4.2 - InnoDB 스토리지 엔진 아키텍쳐 (1) (0) | 2023.02.19 |
RealMySQL 4장 - 4.1 MySQL 엔진 아키텍처 (0) | 2023.01.20 |