• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 1. 최적화 개요
    2. SQL문 최적화
    3. 최적화 및 인덱스
    4. 데이터베이스 구조의 최적화
    5. InnoDB 테이블의 최적화
    6. MyISAM 테이블의 최적화
    7. MEMORY 테이블 최적화
    8. 쿼리 실행 계획의 이해
    9. 버퍼링과 캐시
    1. InnoDB 버퍼 풀
    2. MyISAM 키 캐시
    1. 공유 키 캐시 액세스
    2. 복합 키 캐시
    3. Midpoint 삽입 전략
    4. 인덱스 프리로드
    5. 키 캐시 블록 크기
    6. 키 캐시의 재구성
    3. MySQL 쿼리 캐시
    4. 준비된 문 및 저장 프로그램 캐시
    10. 잠금 작업의 최적화
    11. MySQL 서버의 최적화
    12. 성능 측정
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

8.9.2 MyISAM 키 캐시

8.9.2.1 공유 키 캐시 액세스
8.9.2.2 복합 키 캐시
8.9.2.3 미드 포인트 삽입 전략
8.9.2.4 인덱스 프리로드
8.9.2.5 키 캐시 블록 크기
8.9.2.6 키 캐시의 재구성

디스크 I / O를 최소화하기 위해 MyISAM 스토리지 엔진은 많은 데이터베이스 관리 시스템에서 사용되는 전략을 사용합니다. 그것은 가장 자주 액세스되는 테이블 블록을 메모리에 보관하는 캐시 메커니즘을 채용하고 있습니다.

  • 인덱스 블록의 경우 키 캐시 (또는 키 버퍼)라고 불리는 특별한 구조가 유지됩니다. 그 구조는 가장 많이 사용되는 인덱스 블록이 놓이는 다수의 블록 버퍼가 포함되어 있습니다.

  • 데이터 블록에 대해, MySQL은 특별한 캐시를 사용하지 않습니다. 대신 기본 운영 체제의 파일 시스템 캐시에 의존합니다.

이 섹션에서는 우선 MyISAM 키 캐시의 기본 동작에 대해 설명합니다. 다음은 키 캐시 성능을 향상시키는 기능과 캐시 작업을보다 효율적으로 제어 할 수 있도록하는 기능에 대해 설명합니다.

  • 여러 세션이 동시에 캐시에 액세스 할 수 있습니다.

  • 여러 키 캐시를 설정하고 특정 캐시에 테이블 인덱스를 할당 할 수 있습니다.

키 캐시의 크기를 제어하려면 key_buffer_size 시스템 변수를 사용합니다. 이 변수를 0으로 설정되어 있으면 키 캐시는 사용되지 않습니다. 키 캐시는 key_buffer_size 값이 너무 작아 최소 개수의 블록 버퍼 (8)을 할당 할 수없는 경우도 사용되지 않습니다.

키 캐시가 동작하지 않는 경우 인덱스 파일은 운영 체제에서 제공하는 기본 파일 시스템 버퍼만을 사용하여 액세스됩니다. (즉, 테이블 인덱스 블럭은 테이블 데이터 블록에 사용되는 동일한 전략을 사용하여 액세스됩니다.)

인덱스 블록은 MyISAM 인덱스 파일에 대한 연속적인 액세스 단위입니다. 일반적으로 인덱스 블록의 크기는 인덱스 B 트리 노드의 크기와 동일합니다. (인덱스는 디스크에서 B 트리 데이터 구조를 사용하여 표시됩니다. 트리의 하단에있는 노드는 리프 노드입니다. 리프 노드에 노드는 리프가 아닌 노드입니다.)

키 캐시 구조의 모든 블록 버퍼는 같은 크기입니다. 이 크기는 테이블 인덱스 블록의 크기와 같거나 크거나 줄일 수 있습니다. 일반적으로이 두 값 중 하나는 다른 하나의 배수가됩니다.

하나의 테이블 인덱스 블록의 데이터에 액세스 할 필요가있는 경우, 서버는 우선 키 캐시의 어떤 블록 버퍼에 그것을 사용할 수 있는지 여부를 확인합니다. 그렇다면 서버는 디스크가 아닌 키 캐시의 데이터에 액세스합니다. 즉, 디스크에서 읽고 그것에 쓸 것이 아니라 캐시에서 읽고 그것에 쓸 수 있습니다. 그렇지 않은 경우, 서버는 다른 테이블 인덱스 블록을 포함하는 캐시 블록 버퍼를 선택하고 그 데이터를 필요한 테이블 인덱스 블록의 복사본으로 바꿉니다. 새로운 인덱스 블록이 캐시되면 즉시 인덱스 데이터에 액세스 할 수 있습니다.

대체를 위해 선택된 블록이 변경되지 않으면 블록은 "더티"로 간주됩니다. 이 경우 대체 전에 그 내용이 가져올 테이블 인덱스에 플래시됩니다.

보통 서버는 LRU (Least Recently Used) 전략을 따릅니다. 대체 블록을 선택하는 경우 가장 최근에 사용되지 않은 인덱스 블록을 선택합니다. 이 선택을 쉽게하기 위해 키 캐시 모듈은 사용 된 모든 블록을 특수 목록 (LRU 체인) 사용 시간으로 정렬하여 보유하고 있습니다. 블록이 사용되면 그것은 최근에 사용 된 것이되어,리스트의 말미에 놓여집니다. 블록을 교체 할 필요가있을 경우,리스트의 선두에있는 블록이 가장 최근에 사용되지 않은 것, 새우 션의 첫 번째 대상이됩니다.

InnoDB 스토리지 엔진은 버퍼 풀을 관리하기 위해서도 LRU 알고리즘을 사용합니다. 섹션 8.9.1 "InnoDB 버퍼 풀" 을 참조하십시오.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved