2009년 5월 7일 목요일

InnoDB 스레드

InnoDB처리를 실행하는 전용 스레드가 만들어지고 이것이 백그라운드에서 요구를 순차적으로 처리해 간다. 
이 스레드는 한개의 클라이언트당 한개의 스레드가 생성되는 것이 아니고 MySQL서버 한개당 한정된 수만큼만 생성된다. 

이 스레드 수는 다음의 MySQL서버의 옵션에서 변경가능하다. 

innodb_thread_concurrency 

추가적으로 MySQL버전에 따라서 표준 스레드수가 다르다. 

5.1.12-beta  8
5.0.8-beta ~ 5.0.18  20(무제한)
5.0.19~5.0.20  0(무제한)

5.0.19상위 버전에서는 20은 20개라는 의미로 변경되었다. 

현재, 이 수를 마구 늘리면 좋다는 것은 아니다.  테스트 툴등을 사용해서 어느정도의 클라이언트 수 일 때 최적인지 확인해두는 것이 좋을 것이다. 

우선은 8개전후로 시도해보는 것이 좋다. 

이외에도 I/O처리를 담당하는 스레드가 생성된다.  
「read thread」「write thread」「log thread」「insert buffer thread」라고 불리우는 4개의 스레드이다. 

다음의 옵션으로 이 수를 늘리는 것은 가능하지만(4이상) , 추가된 것은 read, write의 예비 역할을 하게 된다. 
그러나 이 옵션은 5.1.12-beta에서는 windows에서만 동작한다. 

innodb_file_io_threads