• 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 스토리지 엔진
  • 1. InnoDB 소개
    2. InnoDB의 개념과 아키텍처
    3. InnoDB 구성
    4. InnoDB 관리
    5. InnoDB 테이블 스페이스 관리
    6. InnoDB 테이블 관리
    7. InnoDB 압축 테이블
    8. InnoDB 파일 형식 관리
    9. InnoDB Row Storage and Row Formats
    10. InnoDB 디스크 I/O 및 파일 영역 관리
    11. InnoDB와 온라인 DDL
    12. InnoDB 부팅 옵션 및 시스템 변수
    13. InnoDB의 성능
    14. InnoDB INFORMATION_SCHEMA 테이블
    15. InnoDB 모니터
    16. InnoDB 백업 및 복구
    17. InnoDB와 MySQL 복제
    18. InnoDB 및 memcached의 통합
    1. InnoDB 및 memcached 조합의 장점
    2. InnoDB 및 memcached의 통합 아키텍처
    3. InnoDB Memcached 플러그인의 개요
    4. InnoDB memcached 플러그인의 보안 고려 사항
    5. InnoDB memcached 인터페이스용 응용 프로그램 만들기
    1. memcached 응용 프로그램에 대한 기존의 MySQL 스키마 변경
    2. 통합 memcached 데몬에 대한 기존 memcached 응용 프로그램의 수정
    3. InnoDB memcached 플러그인 성능 조정
    4. InnoDB memcached 플러그인의 트랜잭션 동작 제어
    5. memcached 조작에 맞춘 DML 문 수정
    6. 기반이되는 InnoDB 테이블의 DML 및 DDL 문 실행
    6. 복제에서 InnoDB memcached 플러그인 사용
    7. InnoDB memcached 플러그인 내부 구조
    8. InnoDB memcached 플러그인 문제 해결
    19. 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 새로운 기능

14.18.5.3 InnoDB memcached 플러그인 성능 조정

InnoDB 및 memcached를 함께 사용하면 모든 데이터를 즉시 또는 잠시 후 디스크에 기록하므로 성능이 memcached만을 사용하는 경우보다 약간 낮습니다. InnoDB memcached 플러그인의 튜닝은 동등한 SQL 조작보다 높은 성능을 달성하도록 설정하십시오.

벤치 마크에서는 쿼리 및 DML 조작 (삽입, 업데이트 및 삭제)은 모두 기존의 SQL보다 memcached 인터페이스를 통한 더 빠르게됩니다. 일반적으로 DML 작업이 더 속도가 크게 향상됩니다. 따라서 memcached 인터페이스를 사용하기 위해 먼저 변경하는 것이 좋은 응용 프로그램의 유형은 쓰기 작업이 많은 응용 프로그램입니다. 또한 이전 신뢰성이 우선되지 않으면 빠르고 가벼운 메커니즘을 사용하여 쓰기 작업이 많은 응용 프로그램 유형에서는 MySQL을 데이터 저장소로 사용하는 경우도 있습니다.

SQL 쿼리 변경

간단한 GET 요청 스타일의 가장 적합한 쿼리 유형은 단 한 마디 또는 AND 조건 세트를 WHERE 절에 지정한 것입니다.

 SQL :
 select col from tbl where key = 'key_value';

 memcached :
 GET key_value

 SQL :
 select col from tbl where col1 = val1 and col2 = val2 and col3 = val3;

 memcached :
 # Since you must always know these 3 values​​ to look up the key,
 # combine them into a unique string and use that as the key
 # for all ADD, SET and GET operations.
 key_value = val1 + ":"+ val2 + ":"+ val3
 GET key_value

 SQL :
 select 'key exists!'from tbl
   where exists (select col1 from tbl where key = 'key_value') limit 1;

 memcached :
 # Test for existence of key by asking for its value and checking if the call succeeds,
 # ignoring the value itself. For existence checking, you typically only store a very
 # short value such as "1".
 GET key_value

시스템 메모리 사용

최적의 성능을 얻으려면, InnoDB memcached 플러그인 전형적인 데이터베이스 서버와 같이 구성된 시스템에 있어야하고 특히 innodb_buffer_pool_size 구성 옵션을 사용하여 대부분의 시스템 RAM을 InnoDB 버퍼 풀 에 할당 된 데이터베이스 서버에 배포합니다. 여러 기가 바이트의 버퍼 풀을 갖춘 시스템에서 대부분의 작업이 메모리에 캐시 된 데이터를 사용하는 경우 처리량이 최대가되도록 innodb_buffer_pool_instances 구성 옵션 값을 높게합니다.

중복 I / O 감소

InnoDB 는 충돌시의 높은 신뢰성과 높은 쓰기 작업시의 I / O 오버 헤드의 양의 균형을 선택할 수있는 설정이 있습니다. 예를 들어, 구성 옵션 innodb_doublewrite=0 및 innodb_flush_log_at_trx_commit=2 를 설정합니다. innodb_flush_method 옵션의 설정을 변경하여 성능을 측정합니다. 서버의 바이너리 로그 가 조정되지 않는 경우 innodb_support_xa=0 설정을 사용합니다.

테이블 조작의 I / O를 줄이고 튜닝 할 다른 방법은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.

트랜잭션 오버 헤드 감소

구성 옵션 daemon_memcached_r_batch_size 및 daemon_memcached_w_batch_size 대한 기본값 1에서 결과에 대한 최고의 신뢰성과 보관 또는 갱신되는 데이터의 안전을 보장합니다.

응용 프로그램의 유형에 따라 이러한 설정 중 하나 또는 모두를 늘리면 잦은 커밋 작업 비용을 절감 할 수 있습니다. 데이터 집약적 시스템에서는 SQL을 통해 행한 데이터에 변경이 memcached에 즉시 (즉, get 조작이 뒤 N 회 처리 될 때까지) 표시되지 않을 것을 확인하고 daemon_memcached_r_batch_size 을 늘릴 수 합니다. 모든 쓰기 작업을 확실하게 보관해야하는 데이터 처리의 경우 daemon_memcached_w_batch_size 설정 1을 유지합니다. 통계 분석에만 사용하는 대량의 업데이트를 처리하는 경우는 충돌시에 마지막 N 개의 업데이트가 손실 되어도 큰 문제가 아니기 때문에이 설정을 늘릴 수 있습니다.

예를 들어, 통행량이 많은 교량을 통과 교통량을 모니터하고 하루에 약 100,000 대의 차량을 기록하는 시스템에 대해 생각해 보겠습니다. 교통 패턴을 분석하기 위해 단순히 다른 종류의 차량을 세는 만 응용 프로그램의 경우 daemon_memcached_w_batch_size 를 1 에서 100 로 변경하면 커밋 작업의 I / O 오버 헤드를 99 % 줄일 수 있습니다. 의외의 기능 정지의 경우 최대 100 개의 레코드가 손실 되어도 허용 오차의 가능성이 있습니다. 한편, 각 차량에 대한 자동 요금 징수를 응용 프로그램에서 실행하는 경우 daemon_memcached_w_batch_size 설정을 1 로 유지하고 요금 징수의 기록을 즉시 디스크에 저장하는 것이 좋은 경우도 있습니다.

InnoDB 가 디스크에서 memcached 키 값을 구성하는 방법으로 인해 대량의 키가 생성되는 경우 데이터 항목을 응용 프로그램에서 키 값으로 정렬하고 정렬 한 순서대로 追加 하는 것이 어떤 순서로 키를 만드는 것보다 빨라집니다.

memslap 명령은 다양한 구성의 벤치 마크 편리합니다. 이것은 일반 memcached 배포의 일부이지만 MySQL Server에 포함되어 있지 않습니다. 또한 자신의 벤치 마크에서 사용할 수있는 샘플 키 / 값 쌍의 생성에 사용할 수 있습니다. 자세한 내용은 섹션 16.6.3.3.6 "libmemcached 명령 행 유틸리티" 를 참조하십시오.

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