레이블이 스레드인 게시물을 표시합니다. 모든 게시물 표시
레이블이 스레드인 게시물을 표시합니다. 모든 게시물 표시

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


2008년 12월 14일 일요일

MySQL기본구조 - 멀티스레드

MySQL서버는 처리를 복수의 스레드가 분담한다. 

*메인스레드 
*각 클라이언트에 대응하는 스레드
 하나의 클라이언트에 대해서 하나의 스레드를 갖는다.  현재는 SQL해석과 실행은 이 스레드 각각이 처리한다. 
*접속핸들(handle TCP/IP sockets)스레드
*시그널핸들러(interrupt)스레드
*shutdown스레드
 mysqld정지를 실행한다.  시그널핸들러에 의해 작성된다. 
*named pipe접속용 스레드
*shared memory접속용 스레드
*delayed스레드
 INSERT DELAYED에서 사용
*레플리케이션용 스레드
  마스터에서는 한개의 스레드(Binog dump스레드), 슬레이브에서는 두개의 스레드(I/O스레드, SQL스레드)가 생성된다. 
*InnoDB용 스레드
  I/O스레드(4개)
  watchmen스레드(2개)
 InnoDB마스터스레드
*bootstrap스레드
 권한 테이블의 초기작성시에 사용된다. 초기화를 끝내면 (정확히 표준입력에서 SQL문장 해석이 끝나면)종료된다.