• 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의 성능
    1. InnoDB 버퍼 풀 구성
    2. InnoDB 상호 배타적 잠금 및 읽기 / 쓰기 잠금 구현
    3. InnoDB를위한 메모리 할당 구성
    4. InnoDB 변경 버퍼링 구성
    5. InnoDB의 스레드 병렬성 구성
    6. InnoDB 백그라운드 I/O 스레드 수 구성
    7. 그룹 커밋
    8. InnoDB 마스터 스레드의 I/O 속도의 구성
    9. InnoDB 스핀 루프에서 PAUSE 명령 사용
    10. 스핀 록 폴링 구성
    11. InnoDB의 MySQL 성능 스키마와 통합
    12. 다중 롤백 세그먼트에 의한 확장성 향상
    13. InnoDB 퍼지 스케줄링 구성
    14. InnoDB의 읽기 전용 트랜잭션 최적화
    15. 체크섬의 고속화를위한 CRC32 체크섬 알고리즘의 사용
    16. 옵티 마이저 통계
    17. InnoDB 테이블에 ANALYZE TABLE의 복잡성 추정
    14. InnoDB INFORMATION_SCHEMA 테이블
    15. InnoDB 모니터
    16. InnoDB 백업 및 복구
    17. InnoDB와 MySQL 복제
    18. 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.13.5 InnoDB의 스레드 병렬성 구성

InnoDB 는 운영 체제 스레드 를 사용하여 사용자 트랜잭션의 요청을 처리합니다. (트랜잭션은 커밋 또는 롤백하기 전에 InnoDB 에 다수의 요청을 발행 할 수 있습니다.) 컨텍스트 스위칭이 효율적인 멀티 코어 프로세서를 갖춘 최신 운영 체제 및 서버에서는 병렬 스레드 수 을 제한하지 않고 대부분의 워크로드가 제대로 작동합니다. MySQL 5.5 이상에서의 확장 성 향상에 의해, InnoDB 내부의 병렬 실행중인 스레드의 수를 제한 할 필요성은 감소합니다.

스레드 간의 컨텍스트 스위칭을 최소화 도움이 상황에서는 InnoDB 는 몇 가지 기법을 사용하여 병렬 실행중인 운영 체제 스레드 수 (따라서 한 번에 처리되는 요청 수)를 제한 수 있습니다. InnoDB 가 사용자 세션에서 새 요청을 수신했을 때, 병렬 실행중인 스레드의 수가 미리 정의 된 제한에 도달하면 그 새로운 요구는 재시도 전에 짧은 시간 동안 대기합니다. 수면 후 재조정 할 수없는 요구는 선입 선출 큐에 결국 처리됩니다. 락을 대기하고있는 thread는 병렬 실행중인 스레드 수에 포함되지 않습니다.

병렬 스레드 수 구성 매개 변수 innodb_thread_concurrency 를 설정하여 제한 할 수 있습니다. 실행중인 스레드의 수가이 한계에 도달하면 추가 스레드는 큐에 넣어지기 전에 구성 매개 변수 innodb_thread_sleep_delay 로 구성된 마이크로 초만큼 대기합니다.

이전에는 innodb_thread_sleep_delay 의 최적 값을 찾기 위해 실험이 필요하며, 그 최적 값도 작업 부하에 따라 변화 할 수있었습니다. MySQL 5.6.3 이후에서는 구성 옵션 innodb_adaptive_max_sleep_delay 을 innodb_thread_sleep_delay 허용하는 가장 큰 값으로 설정할 수 있으며, InnoDB 가 현재의 thread 스케줄링 활동에 따라 innodb_thread_sleep_delay 를 위 또는 아래로 자동으로 조정합니다. 이 동적 조정 시스템에 걸리는 부하가 적은 기간이나 시스템이 거의 가득 찬 용량으로 작동하는 기간 스레드 스케줄링 메커니즘이 원활하게 작동하는 데 도움이됩니다.

innodb_thread_concurrency 의 기본값과 병렬 스레드 수에 대한 암묵적인 기본 제한은 MySQL과 InnoDB 의 다양한 릴리스에서 변경되어 왔습니다. 현재 기본적으로 병렬 실행중인 스레드 수에 제한이 없도록 innodb_thread_concurrency 의 기본값은 0 입니다.

InnoDB 가 스레드를 대기시키는 병렬 스레드의 수가 제한되어있는 경우뿐만된다는 점에 유의하십시오. 스레드 수에 제한이 없으면 모든 것이 동등하게 경쟁하여 예약됩니다. 즉, innodb_thread_concurrency 가 0 인 경우는 innodb_thread_sleep_delay 값은 무시됩니다.

스레드 수에 제한이있다 ( innodb_thread_concurrency > 0 인 경우) InnoDB 는 하나의 SQL 문 실행 중에 발행 된 여러 요청이 innodb_thread_concurrency 에서 설정된 제한 사항을 준수하지 않고 InnoDB 에 들어가는 것을 허용함으로써 컨텍스트 스위칭 오버 헤드를 줄일 수 있습니다. SQL 문 (조인)는 InnoDB 에서 여러 행 조작으로 구성되어있을 가능성이 있기 때문에 InnoDB 는 스레드가 최소한의 오버 헤드로 반복 예약하는 것을 허용하는 지정된 수의 '티켓 "을 할당합니다.

새로운 SQL 문이 시작되면 스레드는 티켓이 없기 때문에 innodb_thread_concurrency 에 따라야합니다. 스레드가 InnoDB 에 들어가게되면 그 스레드는 행 작업을 수행하기 위해 나중에 InnoDB 에 들어갈 때 사용할 수있는 여러 티켓이 할당됩니다. 그 티켓이 소진 된 경우 스레드는 삭제되고 다시 innodb_thread_concurrency 에 따릅니다. 그러면 그 스레드가 대기 중의 thread의 선입 선출 큐에 리턴 할 수 있습니다. 스레드가 다시 InnoDB 에 들어가게되면 티켓이 다시 할당됩니다. 할당 된 티켓의 수는 글로벌 옵션 innodb_concurrency_tickets (기본적으로 5000,5.6.6 이전 500)로 지정됩니다. 락을 대기하고있는 thread는 잠금이 사용 가능하게되면 티켓이 하나 주어집니다.

이러한 변수의 올바른 값은 환경과 워크로드에 따라 다릅니다. 응용 프로그램에서 어떤 값이 작동하는지 확인하려면 다른 값을 시도해보십시오. 병렬 실행중인 스레드의 수를 제한하기 전에 멀티 코어 및 멀티 프로세서 컴퓨터에서 InnoDB 의 성능을 향상시킬 수있는 구성 옵션 ( innodb_adaptive_hash_index 등)을 확인하십시오.

MySQL 스레드 처리에 관한 일반적인 성능 정보는 섹션 8.11.5.1 「MySQL의 클라이언트 연결을위한 스레드 사용 " 을 참조하십시오.

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