• 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. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 1. Oracle VM Template for MySQL Enterprise
    2. DRBD/Pacemaker/Corosync/Oracle Linux 사용
    3. Windows 장애 조치 클러스터링 사용
    4. Amazon EC2 인스턴스의 MySQL의 사용
    5. ZFS 복제 사용
    6. MySQL과 memcached의 병용
    1. memcached 설치
    2. memcached 사용
    1. memcached 배포
    2. Namespaces 사용
    3. 데이터 폐기
    4. memcached의 해시/분포 유형
    5. memcached와 DTrace 사용
    6. memcached에서의 메모리 할당
    7. memcached의 스레드 지원
    8. memcached 로그
    3. memcached 응용 프로그램 개발
    4. memcached 통계의 취득
    5. memcached의 FAQ
  • 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 새로운 기능

16.6.2.6 memcached에서의 메모리 할당

memcached를 처음 시작했을 때는 구성된 메모리가 자동으로 할당되지 않습니다. 대신 memcached는 캐시에 정보 저장이 시작 된 후에 비로소 물리적 메모리 할당 및 확보를 시작합니다.

캐시에 데이터를 저장하고 시작할 때, memcached는 항목의 데이터 메모리를 항목 단위로 할당하지 않습니다. 대신 슬래브 할당을 사용하여 메모리 사용을 최적화하고 캐시 정보가 만료 된 때​​ 메모리 조각화를 방지합니다.

슬라브 할당을 사용하면 메모리가 1M 바이트 블록 단위로 보장됩니다. 슬래브는 동일한 크기의 여러 블록으로 분할됩니다. 캐시에 값을 저장하려고하면 memcached는 캐시에 추가되는 값의 크기를 확인하고 해당 항목에 적합한 크기의 할당을 포함 슬래브를 확인합니다. 항목의 크기에 맞게 슬래브가 이미 존재하는 경우, 슬래브의 블록에 항목이 기록됩니다.

새 항목이 기존의 어떤 블록 크기보다 큰 경우, 새로운 슬래브가 만들어지고 적절한 크기의 블록으로 분할됩니다. 적절한 블록 크기를 갖는 슬래브가 이미 존재하지만, 여유 블록이없는 경우는 새로운 슬래브가 작성됩니다. 기존 항목을 해당 키에 대한 기존의 블록 할당 더 큰 데이터로 업데이트하면 그 키는 적절한 석판에 다시 할당됩니다.

예를 들어, 최소 블록의 기본 크기는 88 바이트 (값 40 바이트와 키 및 플래그 데이터에 대한 기본 48 바이트)입니다. 캐시에 먼저 저장하는 항목의 크기가 40 바이트 미만인 경우는 88 바이트의 블록 크기를 갖는 슬래브가 생성되고 값이 저장됩니다.

저장하려는 데이터 크기가이 값보다 큰 경우는 블록 크기를 청크 크기 계수의 단위로 증가시켜 값을 저장할 수있는 크기의 블록 크기가 결정됩니다. 블록 크기는 항상 스케일 계수의 함수이며, 청크 크기 다만 나눌 수있는 블록 크기로 반올림합니다.

이 구조의 예는 그림 16.7 "memcached에서의 메모리 할당" 을 참조하십시오.

그림 16.7 memcached에서의 메모리 할당

memcached에서의 메모리 할당

따라서 memcached에 할당 된 메모리의 범위 내에 복수의 페이지가 할당됩니다. 각 페이지는 (기본적으로) 1M 바이트의 크기를 가지고 키 / 값 쌍을 저장하는 데 필요한 청크 크기에 따라 다를 수 청크로 분할됩니다. 각 인스턴스는 여러 페이지가 할당 특정 크기의 청크를 필요로하는 새 항목을 만들 필요가있을 때는 항상 페이지가 생성됩니다. 슬래브는 여러 페이지로 구성 될 수 슬래브의 각 페이지에는 같은 수의 청크가 포함되어 있습니다.

새로운 슬래브의 청크 크기는 기반이되는 청크 크기 및 청크 크기 증가 계수의 조합에 의해 결정됩니다. 예를 들어, 초기 청크 크기가 104 바이트에서 기본 청크 크기 증가 계수 (1.25)가 사용되는 경우 다음 할당 청크 크기는 104 * 1.25에 가장 적합한 2의 거듭 제곱 (136 바이트)입니다 .

이렇게하여 페이지를 할당하여 메모리의 단편화를 방지 할 수 있습니다. 그러나 포함 된 개체의 분포에 따라 항목의 크기가 크게 다른 경우 슬래브와 청크가 효과적으로 분포하지 않을 수 있습니다. 예를 들어, 각 청크 크기의 항목 수가 적은 경우는 할당 된 각 페이지에 극소수의 청크 밖에 존재하지 않기 때문에 많은 메모리가 낭비 될 가능성이 있습니다.

-f 명령 행 옵션을 사용하여 증가 계수를 조정하면이 영향을 줄일 수 있습니다. 이 옵션은 할당 된 청크와 슬래브를보다 효과적으로 사용할 수 있도록 적용되는 증대 계수를 조정합니다. 현재 슬래브 할당 통계를 확인하는 방법은 섹션 16.6.4.2 "memcached 석판 통계" 를 참조하십시오.

운영 체제에서 지원되는 경우 -L 명령 행 옵션을 지정하여 memcached를 시작할 수 있습니다. 이 옵션은 부팅 중에 큰 메모리 페이지를 사용하여 모든 메모리를 미리 할당합니다. 그러면 CPU 메모리 캐시 미스의 수가 줄어들고 성능이 향상 될 수 있습니다.

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