[MySQL][InnoDB] 스레드 동시성 설정

InnoDB 운영 체제 스레드를 사용하여 사용자 트랜잭션의 요청을 처리합니다.(트랜잭션은 커밋 또는 롤백하기 전에 InnoDB 많은 요청을 발행 있습니다.) 컨텍스트 전환이 효율적인 멀티 코어 프로세서가 있는 최신 운영 체제 서버에서는 대부분의 워크로드가 동시 스레드 수에 제한없이 실행됩니다. MySQL 5.5 이상의 확장성 향상은 InnoDB 내에서 동시에 실행되는 스레드 수를 제한 필요성을 줄입니다.

 

스레드간 컨텍스트 전환을 최소화하는 것이 도움이되는 상황에서 InnoDB 여러 가지 기술을 사용하여 동시에 실행중인 운영 체제 스레드 ( 번에 처리되는 요청 ) 제한 있습니다. InnoDB 사용자 세션으로부터 요청을 수신 동시에 실행중인 스레드 수가 사전 정의 한계에 도달하면 요청은 잠깐 동안 대기 다시 시도합니다. 일정 대기 재조정할 없는 요청은 선입 선출 대기열에 들어가고 결국은 처리됩니다. 잠금을 대기중인 스레드는 동시에 실행중인 스레드 수에 포함되지 않습니다.

 

 

 

구성 매개 변수 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 현재 스레드 예약 활동에 따라 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 다시 관찰되어 스레드가 대기중인 스레드의 선입 선출 큐에 다시 배치 있습니다. 스레드에 다시 InnoDB 입력 수있는 권한이 있으면 티켓이 다시 할당됩니다. 할당된 티켓 수는 글로벌 옵션 innodb_concurrency_tickets 의해 지정되며 기본적으로 5000입니다. 잠금을 대기중인 스레드는 잠금이 사용 가능해지면 하나의 티켓을 받습니다.

 

이러한 변수의 올바른 값은 환경 작업 부하에 따라 다릅니다. 다양한 값을 사용하여 응용 프로그램에 적합한 값을 결정해야 합니다. 동시에 실행되는 스레드 수를 제한하기 전에 innodb_adaptive_hash_index 같은 다중 코어 다중 프로세서 컴퓨터에서 InnoDB 성능을 향상시킬 수있는 구성 옵션을 검토합니다.

 

 

도움이 되셨다면 광고클릭 한번 부탁드립니다.※

 

Designed by JB FACTORY